From a47dad7a7d0751f94d3d1fe3dd78d9039a14f47a Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 4 Apr 2025 16:21:23 +1100 Subject: [PATCH] cmd/torrent: Some log, ctx and error handling cleanup --- cmd/torrent/download.go | 11 +++++++---- cmd/torrent/main.go | 9 ++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cmd/torrent/download.go b/cmd/torrent/download.go index 9bc16c15..e3cbdf5f 100644 --- a/cmd/torrent/download.go +++ b/cmd/torrent/download.go @@ -98,6 +98,9 @@ func addTorrents( ) error { testPeers := resolveTestPeers(flags.TestPeer) for _, arg := range flags.Torrent { + if ctx.Err() != nil { + return ctx.Err() + } t, err := func() (*torrent.Torrent, error) { if strings.HasPrefix(arg, "magnet:") { t, err := client.AddMagnet(arg) @@ -108,7 +111,7 @@ func addTorrents( } else if strings.HasPrefix(arg, "http://") || strings.HasPrefix(arg, "https://") { response, err := http.Get(arg) if err != nil { - return nil, fmt.Errorf("Error downloading torrent file: %s", err) + return nil, fmt.Errorf("error downloading torrent file: %w", err) } metaInfo, err := metainfo.Load(response.Body) @@ -156,7 +159,7 @@ func addTorrents( case <-t.GotInfo(): } if flags.SaveMetainfos { - path := fmt.Sprintf("%v.torrent", t.InfoHash().HexString()) + path := fmt.Sprintf("%s.torrent", t.InfoHash().HexString()) err := writeMetainfoToFile(t.Metainfo(), path) if err == nil { log.Printf("wrote %q", path) @@ -296,7 +299,7 @@ func statsEnabled(flags downloadFlags) bool { return flags.Stats } -func downloadErr(flags downloadFlags) error { +func downloadErr(ctx context.Context, flags downloadFlags) error { clientConfig := torrent.NewDefaultClientConfig() clientConfig.DisableWebseeds = flags.DisableWebseeds clientConfig.DisableTCP = !flags.TcpPeers @@ -347,7 +350,7 @@ func downloadErr(flags downloadFlags) error { clientConfig.MaxUnverifiedBytes = flags.MaxUnverifiedBytes.Int64() } - ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) + ctx, cancel := signal.NotifyContext(ctx, os.Interrupt, syscall.SIGTERM) defer cancel() client, err := torrent.NewClient(clientConfig) diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 3f5b82cc..3ae99f8b 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -36,7 +36,11 @@ func shutdownTracerProvider(ctx context.Context, tp *trace.TracerProvider) { started := time.Now() err := tp.Shutdown(ctx) elapsed := time.Since(started) - log.Levelf(log.Error, "shutting down tracer provider (took %v): %v", elapsed, err) + logger := log.Default.Slogger() + logger.Debug("shutting down tracer provider", "took", elapsed) + if err != nil && ctx.Err() == nil { + log.Default.Slogger().Error("error shutting down tracer provider", "err", err) + } } func main() { @@ -51,7 +55,6 @@ func mainErr(ctx context.Context) error { return fmt.Errorf("creating tracing exporter: %w", err) } tracerProvider := trace.NewTracerProvider(trace.WithBatcher(tracingExporter)) - defer shutdownTracerProvider(ctx, tracerProvider) otel.SetTracerProvider(tracerProvider) main := bargle.Main{} @@ -84,7 +87,7 @@ func mainErr(ctx context.Context) error { var dlc DownloadCmd cmd := bargle.FromStruct(&dlc) cmd.DefaultAction = func() error { - return downloadErr(downloadFlags{ + return downloadErr(ctx, downloadFlags{ Debug: debug, DownloadCmd: dlc, }) -- 2.48.1