From 2aef45b9cf4b326b84bdee36c844efd3622d6b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20=C3=81lvarez?= Date: Wed, 9 Sep 2020 08:10:13 +0200 Subject: [PATCH] Wait for the streaming goroutine to finish before returning (#816) --- tracer.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tracer.go b/tracer.go index 1256e3390..f18e53ae2 100644 --- a/tracer.go +++ b/tracer.go @@ -765,8 +765,13 @@ func (t *Tracer) loop() { // Run another goroutine to perform the blocking requests, // communicating with the tracer loop to obtain stream data. sendStreamRequest := make(chan time.Duration) - defer close(sendStreamRequest) + done := make(chan struct{}) + defer func() { + close(sendStreamRequest) + <-done + }() go func() { + defer close(done) jitterRand := rand.New(rand.NewSource(time.Now().UnixNano())) for gracePeriod := range sendStreamRequest { if gracePeriod > 0 {