github.com/epsagon/epsagon-go@v1.39.0/example/concurrent_generic_go_functions/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "log" 7 "net/http" 8 "sync" 9 "time" 10 11 "github.com/epsagon/epsagon-go/epsagon" 12 epsagonhttp "github.com/epsagon/epsagon-go/wrappers/net/http" 13 ) 14 15 func doTask(ctx context.Context, a int, b string, wg *sync.WaitGroup) (int, error) { 16 defer wg.Done() 17 log.Printf("inside doTask: b = %s", b) 18 client := http.Client{Transport: epsagonhttp.NewTracingTransport(ctx)} 19 client.Get("https://epsagon.com/") 20 return a + 1, fmt.Errorf("boom") 21 } 22 23 func main() { 24 config := epsagon.NewTracerConfig("generic-go-wrapper", "") 25 config.Debug = true 26 var wg sync.WaitGroup 27 for i := 0; i < 5; i++ { 28 go epsagon.ConcurrentGoWrapper(config, doTask)(i, "hello", &wg) 29 } 30 wg.Wait() 31 time.Sleep(2 * time.Second) 32 }