diff --git a/client/tso_dispatcher.go b/client/tso_dispatcher.go index 2974846dcf3..816582174bd 100644 --- a/client/tso_dispatcher.go +++ b/client/tso_dispatcher.go @@ -547,12 +547,15 @@ func (td *tsoDispatcher) processRequests( ) error { // `done` must be guaranteed to be eventually called. var ( - requests = tbc.getCollectedRequests() - traceRegions = make([]*trace.Region, 0, len(requests)) - spans = make([]opentracing.Span, 0, len(requests)) + requests = tbc.getCollectedRequests() + spans = make([]opentracing.Span, 0, len(requests)) ) + traceCtx := context.Background() + if len(requests) > 0 { + traceCtx = requests[0].requestCtx + } + traceRegion := trace.StartRegion(traceCtx, "pdclient.tsoReqSendBatch") for _, req := range requests { - traceRegions = append(traceRegions, trace.StartRegion(req.requestCtx, "pdclient.tsoReqSend")) if span := opentracing.SpanFromContext(req.requestCtx); span != nil && span.Tracer() != nil { spans = append(spans, span.Tracer().StartSpan("pdclient.processRequests", opentracing.ChildOf(span.Context()))) } @@ -561,9 +564,7 @@ func (td *tsoDispatcher) processRequests( for i := range spans { spans[i].Finish() } - for i := range traceRegions { - traceRegions[i].End() - } + traceRegion.End() }() var (