diff --git a/sdk/metric/pipeline.go b/sdk/metric/pipeline.go index 2240c26e9b4..5c9de91b9c4 100644 --- a/sdk/metric/pipeline.go +++ b/sdk/metric/pipeline.go @@ -130,10 +130,11 @@ func (p *pipeline) produce(ctx context.Context, rm *metricdata.ResourceMetrics) if e := c(ctx); e != nil { err = errors.Join(err, e) } - if err := ctx.Err(); err != nil { + if ctxErr := ctx.Err(); ctxErr != nil { rm.Resource = nil clear(rm.ScopeMetrics) // Erase elements to let GC collect objects. rm.ScopeMetrics = rm.ScopeMetrics[:0] + err = errors.Join(err, ctxErr) return err } } @@ -143,11 +144,12 @@ func (p *pipeline) produce(ctx context.Context, rm *metricdata.ResourceMetrics) if e := f(ctx); e != nil { err = errors.Join(err, e) } - if err := ctx.Err(); err != nil { + if ctxErr := ctx.Err(); ctxErr != nil { // This means the context expired before we finished running callbacks. rm.Resource = nil clear(rm.ScopeMetrics) // Erase elements to let GC collect objects. rm.ScopeMetrics = rm.ScopeMetrics[:0] + err = errors.Join(err, ctxErr) return err } }