You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
Pool sortables used to create attribute sets (#3832)
* Pool sortables used to create attribute sets * Move sync pool to attribute pkg * Add change to changelog * Fix comment * Apply suggestions from code review Co-authored-by: Peter Liu <lpfvip2008@gmail.com> * Update sdk/metric/instrument.go Co-authored-by: Robert Pająk <pellared@hotmail.com> * Update comment based on feedback * Apply feedback --------- Co-authored-by: Peter Liu <lpfvip2008@gmail.com> Co-authored-by: Robert Pająk <pellared@hotmail.com>
This commit is contained in:
@@ -194,8 +194,12 @@ func (i *instrumentImpl[N]) aggregate(ctx context.Context, val N, attrs []attrib
|
||||
if err := ctx.Err(); err != nil {
|
||||
return
|
||||
}
|
||||
// Do not use single attribute.Sortable and attribute.NewSetWithSortable,
|
||||
// this method needs to be concurrent safe. Let the sync.Pool in the
|
||||
// attribute package handle allocations of the Sortable.
|
||||
s := attribute.NewSet(attrs...)
|
||||
for _, agg := range i.aggregators {
|
||||
agg.Aggregate(val, attribute.NewSet(attrs...))
|
||||
agg.Aggregate(val, s)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,8 +264,12 @@ func newObservable[N int64 | float64](scope instrumentation.Scope, kind Instrume
|
||||
|
||||
// observe records the val for the set of attrs.
|
||||
func (o *observable[N]) observe(val N, attrs []attribute.KeyValue) {
|
||||
// Do not use single attribute.Sortable and attribute.NewSetWithSortable,
|
||||
// this method needs to be concurrent safe. Let the sync.Pool in the
|
||||
// attribute package handle allocations of the Sortable.
|
||||
s := attribute.NewSet(attrs...)
|
||||
for _, agg := range o.aggregators {
|
||||
agg.Aggregate(val, attribute.NewSet(attrs...))
|
||||
agg.Aggregate(val, s)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user