瀏覽代碼

Make sure the metrics goroutine is scheduled

Wait for the goroutine to be scheduled before exiting. We don't wait for
the metrics event to be sent, we only make sure the goroutine is called.
Djordje Lukic 5 年之前
父節點
當前提交
159b9d0cfb
共有 1 個文件被更改,包括 6 次插入0 次删除
  1. 6 0
      metrics/metrics.go

+ 6 - 0
metrics/metrics.go

@@ -52,12 +52,17 @@ var managementCommands = []string{
 
 // Track sends the tracking analytics to Docker Desktop
 func Track(context string, args []string, flags *flag.FlagSet) {
+	wasIn := make(chan bool)
+
 	// Fire and forget, we don't want to slow down the user waiting for DD
 	// metrics endpoint to respond. We could lose some events but that's ok.
 	go func() {
 		defer func() {
 			_ = recover()
 		}()
+
+		wasIn <- true
+
 		command := getCommand(args, flags)
 		if command != "" {
 			c := NewClient()
@@ -67,6 +72,7 @@ func Track(context string, args []string, flags *flag.FlagSet) {
 			})
 		}
 	}()
+	<-wasIn
 }
 
 func getCommand(args []string, flags *flag.FlagSet) string {