Спаны параллельных запросов к складам не привязаны к трассе заказа
g, _ := errgroup.WithContext(ctx)
for _, wh := range warehouses {
g.Go(func() error {
spanCtx, span := tracer.Start(context.Background(), "check_stock")
defer span.End()
return wh.Check(spanCtx, items)
})
}
В Jaeger спаны check_stock появляются отдельными трассами. Что исправить?
- Начинать спан от контекста группы
- Не создавать спаны внутри горутин
- Заменить errgroup на sync.WaitGroup
- Вызывать span.End() без defer
