diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-05 08:50:33 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-05 08:50:33 +0200 |
| commit | 5d1b9f1062d38c301c0995ec6da980bdf5e48332 (patch) | |
| tree | 81e1a8963ea66cf06164e89beb6cd2da0ee325f7 /cmd | |
| parent | bb46cfbccea301721fb93485ea7169f5841feda3 (diff) | |
Improve lint/vet reliability and refactor client runtime/bootstrap
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/dcat/main.go | 48 | ||||
| -rw-r--r-- | cmd/dgrep/main.go | 47 | ||||
| -rw-r--r-- | cmd/dmap/main.go | 50 | ||||
| -rw-r--r-- | cmd/dtail/main.go | 57 |
4 files changed, 48 insertions, 154 deletions
diff --git a/cmd/dcat/main.go b/cmd/dcat/main.go index 4203809..9b8da4f 100644 --- a/cmd/dcat/main.go +++ b/cmd/dcat/main.go @@ -1,18 +1,12 @@ package main import ( - "context" "flag" "os" - "sync" - - "net/http" - _ "net/http" - _ "net/http/pprof" + "github.com/mimecast/dtail/internal/cli" "github.com/mimecast/dtail/internal/clients" "github.com/mimecast/dtail/internal/config" - "github.com/mimecast/dtail/internal/io/dlog" "github.com/mimecast/dtail/internal/io/signal" "github.com/mimecast/dtail/internal/profiling" "github.com/mimecast/dtail/internal/source" @@ -61,44 +55,18 @@ func main() { version.PrintAndExit() } - ctx, cancel := context.WithCancel(context.Background()) - var wg sync.WaitGroup - wg.Add(1) - dlog.Start(ctx, &wg, source.Client) - - // Set up profiling - profiler := profiling.NewProfiler(profileFlags.ToConfig("dcat")) - defer profiler.Stop() - - if pprof != "" { - dlog.Client.Info("Starting PProf", pprof) - go func() { - panic(http.ListenAndServe(pprof, nil)) - }() - } - - // Log initial metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("startup") - } + runtime := cli.NewClientRuntime(nil, profileFlags, "dcat") + runtime.StartPProf(pprof) + runtime.LogStartupMetrics() client, err := clients.NewCatClient(args) if err != nil { + runtime.Stop() panic(err) } - status := client.Start(ctx, signal.InterruptCh(ctx)) - - // Log final metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("shutdown") - } - - // Stop profiler before exit - profiler.Stop() - - cancel() - - wg.Wait() + status := client.Start(runtime.Context(), signal.InterruptCh(runtime.Context())) + runtime.LogShutdownMetrics() + runtime.Stop() os.Exit(status) } diff --git a/cmd/dgrep/main.go b/cmd/dgrep/main.go index 0002c89..0e4eb29 100644 --- a/cmd/dgrep/main.go +++ b/cmd/dgrep/main.go @@ -1,18 +1,12 @@ package main import ( - "context" "flag" "os" - "sync" - - "net/http" - _ "net/http" - _ "net/http/pprof" + "github.com/mimecast/dtail/internal/cli" "github.com/mimecast/dtail/internal/clients" "github.com/mimecast/dtail/internal/config" - "github.com/mimecast/dtail/internal/io/dlog" "github.com/mimecast/dtail/internal/io/signal" "github.com/mimecast/dtail/internal/profiling" "github.com/mimecast/dtail/internal/source" @@ -67,48 +61,23 @@ func main() { version.PrintAndExit() } - ctx, cancel := context.WithCancel(context.Background()) - var wg sync.WaitGroup - wg.Add(1) - dlog.Start(ctx, &wg, source.Client) - - // Set up profiling - profiler := profiling.NewProfiler(profileFlags.ToConfig("dgrep")) - defer profiler.Stop() + runtime := cli.NewClientRuntime(nil, profileFlags, "dgrep") if grep != "" { args.RegexStr = grep } - if pprof != "" { - dlog.Client.Info("Starting PProf", pprof) - go func() { - panic(http.ListenAndServe(pprof, nil)) - }() - } - - // Log initial metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("startup") - } + runtime.StartPProf(pprof) + runtime.LogStartupMetrics() client, err := clients.NewGrepClient(args) if err != nil { + runtime.Stop() panic(err) } - status := client.Start(ctx, signal.InterruptCh(ctx)) - - // Log final metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("shutdown") - } - - // Stop profiler before exit - profiler.Stop() - - cancel() - - wg.Wait() + status := client.Start(runtime.Context(), signal.InterruptCh(runtime.Context())) + runtime.LogShutdownMetrics() + runtime.Stop() os.Exit(status) } diff --git a/cmd/dmap/main.go b/cmd/dmap/main.go index 498a09e..ca3981f 100644 --- a/cmd/dmap/main.go +++ b/cmd/dmap/main.go @@ -1,15 +1,10 @@ package main import ( - "context" "flag" "os" - "sync" - - "net/http" - _ "net/http" - _ "net/http/pprof" + "github.com/mimecast/dtail/internal/cli" "github.com/mimecast/dtail/internal/clients" "github.com/mimecast/dtail/internal/config" "github.com/mimecast/dtail/internal/io/dlog" @@ -67,44 +62,21 @@ func main() { version.PrintAndExit() } - ctx, cancel := context.WithCancel(context.Background()) - var wg sync.WaitGroup - wg.Add(1) - dlog.Start(ctx, &wg, source.Client) - - // Set up profiling - profiler := profiling.NewProfiler(profileFlags.ToConfig("dmap")) - defer profiler.Stop() - - if pprof != "" { - dlog.Client.Info("Starting PProf", pprof) - go func() { - panic(http.ListenAndServe(pprof, nil)) - }() - } - - // Log initial metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("startup") - } + runtime := cli.NewClientRuntime(nil, profileFlags, "dmap") + runtime.StartPProf(pprof) + runtime.LogStartupMetrics() client, err := clients.NewMaprClient(args, clients.DefaultMode) if err != nil { + runtime.Stop() dlog.Client.FatalPanic(err) } - status := client.Start(ctx, signal.InterruptChWithCancel(ctx, cancel)) - - // Log final metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("shutdown") - } - - // Stop profiler before exit - profiler.Stop() - - cancel() - - wg.Wait() + status := client.Start( + runtime.Context(), + signal.InterruptChWithCancel(runtime.Context(), runtime.Cancel), + ) + runtime.LogShutdownMetrics() + runtime.Stop() os.Exit(status) } diff --git a/cmd/dtail/main.go b/cmd/dtail/main.go index 45c0275..ee34cc5 100644 --- a/cmd/dtail/main.go +++ b/cmd/dtail/main.go @@ -4,17 +4,13 @@ import ( "context" "flag" "fmt" - "net/http" - _ "net/http" - _ "net/http/pprof" "os" - "sync" "time" + "github.com/mimecast/dtail/internal/cli" "github.com/mimecast/dtail/internal/clients" "github.com/mimecast/dtail/internal/color" "github.com/mimecast/dtail/internal/config" - "github.com/mimecast/dtail/internal/io/dlog" "github.com/mimecast/dtail/internal/io/signal" "github.com/mimecast/dtail/internal/omode" "github.com/mimecast/dtail/internal/profiling" @@ -91,39 +87,27 @@ func main() { } } - ctx, cancel := context.WithCancel(context.Background()) + baseCtx := context.Background() + var timeoutCancel context.CancelFunc if shutdownAfter > 0 { // NEXT: This does not work (auto shutdown) - ctx, cancel = context.WithTimeout(ctx, time.Duration(shutdownAfter)*time.Second) - defer cancel() + baseCtx, timeoutCancel = context.WithTimeout(baseCtx, time.Duration(shutdownAfter)*time.Second) } - var wg sync.WaitGroup - wg.Add(1) - dlog.Start(ctx, &wg, source.Client) - - // Set up profiling - profiler := profiling.NewProfiler(profileFlags.ToConfig("dtail")) - defer profiler.Stop() + runtime := cli.NewClientRuntime(baseCtx, profileFlags, "dtail") if checkHealth { fmt.Println("WARN: DTail health check has moved to separate binary dtailhealth" + " - please adjust the monitoring scripts!") - cancel() + runtime.Stop() + if timeoutCancel != nil { + timeoutCancel() + } os.Exit(1) } - if pprof != "" { - dlog.Client.Info("Starting PProf", pprof) - go func() { - panic(http.ListenAndServe(pprof, nil)) - }() - } - - // Log initial metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("startup") - } + runtime.StartPProf(pprof) + runtime.LogStartupMetrics() var client clients.Client var err error @@ -132,23 +116,24 @@ func main() { switch args.QueryStr { case "": if client, err = clients.NewTailClient(args); err != nil { + runtime.Stop() panic(err) } default: if client, err = clients.NewMaprClient(args, clients.DefaultMode); err != nil { + runtime.Stop() panic(err) } } - status := client.Start(ctx, signal.InterruptChWithCancel(ctx, cancel)) - - // Log final metrics if profiling is enabled - if profileFlags.Enabled() { - profiler.LogMetrics("shutdown") + status := client.Start( + runtime.Context(), + signal.InterruptChWithCancel(runtime.Context(), runtime.Cancel), + ) + runtime.LogShutdownMetrics() + runtime.Stop() + if timeoutCancel != nil { + timeoutCancel() } - - cancel() - - wg.Wait() os.Exit(status) } |
