mirror of
https://github.com/hanzoai/telemetry.git
synced 2026-10-30 20:01:49 +00:00
This feature is protected by the beta featuregate `pdata.enableRefCounting` so that if unexpected problems occur to have a simple way to disable the problematic logic. If nothing goes wrong for 2 versions this featuregate will be marked as stable. Updates https://github.com/open-telemetry/opentelemetry-collector/issues/13631 Signed-off-by: Bogdan Drutu <[email protected]>
36 lines
972 B
Go
36 lines
972 B
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package refconsumer // import "go.opentelemetry.io/collector/service/internal/refconsumer"
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.opentelemetry.io/collector/consumer"
|
|
"go.opentelemetry.io/collector/consumer/xconsumer"
|
|
"go.opentelemetry.io/collector/pdata/pprofile"
|
|
"go.opentelemetry.io/collector/pdata/xpdata/pref"
|
|
)
|
|
|
|
func NewProfiles(cons xconsumer.Profiles) xconsumer.Profiles {
|
|
return refProfiles{
|
|
consumer: cons,
|
|
}
|
|
}
|
|
|
|
type refProfiles struct {
|
|
consumer xconsumer.Profiles
|
|
}
|
|
|
|
// ConsumeProfiles measures telemetry before calling ConsumeProfiles because the data may be mutated downstream
|
|
func (c refProfiles) ConsumeProfiles(ctx context.Context, ld pprofile.Profiles) error {
|
|
if pref.MarkPipelineOwnedProfiles(ld) {
|
|
defer pref.UnrefProfiles(ld)
|
|
}
|
|
return c.consumer.ConsumeProfiles(ctx, ld)
|
|
}
|
|
|
|
func (c refProfiles) Capabilities() consumer.Capabilities {
|
|
return c.consumer.Capabilities()
|
|
}
|