From 3f043ddbd2a1aa6261afe6346583ce3647428b32 Mon Sep 17 00:00:00 2001 From: Nikhil Sinha Date: Tue, 3 Jun 2025 11:25:10 -0700 Subject: [PATCH] Make calls to metrics synchronous --- pkg/pget.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pkg/pget.go b/pkg/pget.go index 4fb887a..f396905 100644 --- a/pkg/pget.go +++ b/pkg/pget.go @@ -55,10 +55,12 @@ func (g *Getter) DownloadFile(ctx context.Context, url string, dest string) (int if g.Consumer == nil { g.Consumer = &consumer.FileWriter{} } + logger := logging.GetLogger() downloadStartTime := time.Now() buffer, fileSize, err := g.Downloader.Fetch(ctx, url) if err != nil { + g.sendMetrics(url, fileSize, 0, err) return fileSize, 0, err } // downloadElapsed := time.Since(downloadStartTime) @@ -66,20 +68,14 @@ func (g *Getter) DownloadFile(ctx context.Context, url string, dest string) (int err = g.Consumer.Consume(buffer, dest, fileSize) if err != nil { - // Fire and forget metrics - go func() { - g.sendMetrics(url, fileSize, 0, err) - }() + g.sendMetrics(url, fileSize, 0, err) return fileSize, 0, fmt.Errorf("error writing file: %w", err) } // writeElapsed := time.Since(writeStartTime) totalElapsed := time.Since(downloadStartTime) - // Fire and forget metrics - go func() { - g.sendMetrics(url, fileSize, (float64(fileSize) / totalElapsed.Seconds()), nil) - }() + g.sendMetrics(url, fileSize, (float64(fileSize) / totalElapsed.Seconds()), nil) size := humanize.Bytes(uint64(fileSize)) // downloadThroughput := humanize.Bytes(uint64(float64(fileSize) / downloadElapsed.Seconds())) @@ -94,6 +90,7 @@ func (g *Getter) DownloadFile(ctx context.Context, url string, dest string) (int // Str("write_elapsed", fmt.Sprintf("%.3fs", writeElapsed.Seconds())). Str("total_elapsed", fmt.Sprintf("%.3fs", totalElapsed.Seconds())). Msg("Complete") + return fileSize, totalElapsed, nil }