diff --git a/blobstore/api/access/client.go b/blobstore/api/access/client.go index 3c82b146d..726f85ade 100644 --- a/blobstore/api/access/client.go +++ b/blobstore/api/access/client.go @@ -450,7 +450,9 @@ func (c *client) putPartsBatch(ctx context.Context, parts []blobPart) error { }) } - if err := task.Run(context.Background(), tasks...); err != nil { + span := trace.SpanFromContextSafe(ctx) + _, newCtx := trace.StartSpanFromContextWithTraceID(context.Background(), "", span.TraceID()) + if err := task.Run(ctx, tasks...); err != nil { for _, part := range parts { part := part // asynchronously delete blob @@ -461,7 +463,7 @@ func (c *client) putPartsBatch(ctx context.Context, parts []blobPart) error { if err != nil { return } - rpcClient.DoWith(ctx, req, nil) + rpcClient.DoWith(newCtx, req, nil) }() } return err diff --git a/blobstore/sdk/sdk_client.go b/blobstore/sdk/sdk_client.go index 1ebc34d03..af89a38d1 100644 --- a/blobstore/sdk/sdk_client.go +++ b/blobstore/sdk/sdk_client.go @@ -548,12 +548,14 @@ func (s *sdkHandler) putPartsBatch(ctx context.Context, parts []blobPart) error }) } - if err := task.Run(context.Background(), tasks...); err != nil { + span := trace.SpanFromContextSafe(ctx) + _, newCtx := trace.StartSpanFromContextWithTraceID(context.Background(), "", span.TraceID()) + if err := task.Run(ctx, tasks...); err != nil { for _, pt := range parts { part := pt // asynchronously delete blob go func() { - s.deleteBlob(ctx, &acapi.DeleteBlobArgs{ + s.deleteBlob(newCtx, &acapi.DeleteBlobArgs{ ClusterID: part.cid, Vid: part.vid, BlobID: part.bid,