Skip to content

Issue with prometheus exporter while using delta temporality. [Throwing error - panic: invalid access to shared data]  #29574

Closed
@bhupeshpadiyar

Description

@bhupeshpadiyar

Component(s)

exporter/prometheus

What happened?

Description

I am getting the following error in otel-collector while sending the metrics to the VictoriaMetrics database with delta temporality.

panic: invalid access to shared data

Steps to Reproduce

I have configured the temporality and delta in the SDK configuration as following

SdkMeterProvider meterProvider = SdkMeterProvider.builder()
        .registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
                .setAggregationTemporalitySelector(AggregationTemporalitySelector.deltaPreferred())
                .setEndpoint(OTEL_EXPORTER_OTLP_ENDPOINT).build()).setInterval(Duration.ofMillis(1000)).build())
        .build();

I am using Prometheus exporter in the otel-collector and VictoriaMetrics is my datasource. I am using vmagent to pull the metrics and push them to VictoriaMetrics database.
Here is my collector exporter config:

exporters:
  debug:
    verbosity: detailed

  logging:
    loglevel: debug

  prometheus:
    endpoint: "0.0.0.0:4319"
    send_timestamps: true
    metric_expiration: "120m"

Expected Result

prometheus exporter must process the metrics seamlessly.

Actual Result

Getting the following error stack trace:

metrics-poc-otel-collector-1  |         {"kind": "exporter", "data_type": "metrics", "name": "logging"}
metrics-poc-otel-collector-1  | panic: invalid access to shared data
metrics-poc-otel-collector-1  |
metrics-poc-otel-collector-1  | goroutine 110 [running]:
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/pdata/internal.(*State).AssertMutable(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/internal/state.go:20
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/pdata/pmetric.NumberDataPoint.SetStartTimestamp(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/pmetric/generated_numberdatapoint.go:61
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*lastValueAccumulator).accumulateSum(0xc002b46780, {0xc002d701c0?, 0xc0021fe8f0?}, {0xc002b66460?, 0xc0021fe8f0?}, {0xc002d5c138?, 0xc0021fe8f0?}, {0xc15187eb06ebdf7a, 0x2436bf76f, 0xdb89900})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/accumulator.go:205 +0xe65
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*lastValueAccumulator).addMetric(0xc002b46780, {0xc002d701c0?, 0xc0021fe8f0?}, {0xc002b66460?, 0xc0021fe8f0?}, {0xc002d5c138?, 0xc0021fe8f0?}, {0xc15187eb06ebdf7a, 0x2436bf76f, 0xdb89900})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/accumulator.go:85 +0x1fc
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*lastValueAccumulator).Accumulate(0x36d6ac567?, {0xc002d5c120?, 0xc0021fe8f0?})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/accumulator.go:71 +0x10f
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*collector).processMetrics(...)
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/collector.go:92
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*prometheusExporter).ConsumeMetrics(0xc002ad3400, {0xc0005b76e0?, 0xc002869a90?}, {0xc002202a68?, 0xc0021fe8f0?})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/prometheus.go:85 +0x5d
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*metricsRequest).Export(0x8fb5890?, {0x8fb5858?, 0xc002ed8de0?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/metrics.go:58 +0x37
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*timeoutSender).send(0xc0021d75a0?, {0x8fb5890?, 0xc002ed8db0?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/timeout_sender.go:38 +0x90
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*baseRequestSender).send(0xc002ad3500?, {0x8fb5890?, 0xc002ed8db0?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/common.go:33 +0x36
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*metricsSenderWithObservability).send(0xc002b468d0, {0x8fb5890?, 0xc002b46b10?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/metrics.go:173 +0x84
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*baseRequestSender).send(0xc002b466f0?, {0x8fb5890?, 0xc002b46b10?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/common.go:33 +0x36
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*baseExporter).send(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/common.go:189
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.NewMetricsExporter.func1({0x8fb5890, 0xc002b46b10}, {0xc002202a68?, 0xc0021fe8f0?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/metrics.go:98 +0xed
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/consumer.ConsumeMetricsFunc.ConsumeMetrics(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/metrics.go:25
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/internal/fanoutconsumer.(*metricsConsumer).ConsumeMetrics(0xc002869f80?, {0x8fb5890, 0xc002b46b10}, {0xc002202a68?, 0xc0021fe8f0?})

Collector version

0.89.0

Environment information

Environment

OS: (e.g., "MacOS 13.5 (22G74)")

OpenTelemetry Collector configuration

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

exporters:
  debug:
    verbosity: detailed

  logging:
    loglevel: debug

  prometheus:
    endpoint: "0.0.0.0:4319"
    send_timestamps: true
    metric_expiration: "120m"

processors:
  batch:

extensions:
  health_check:

service:
  extensions: [health_check]
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [logging, prometheus, debug]

Log output

metrics-poc-otel-collector-1  |         {"kind": "exporter", "data_type": "metrics", "name": "logging"}
metrics-poc-otel-collector-1  | panic: invalid access to shared data
metrics-poc-otel-collector-1  |
metrics-poc-otel-collector-1  | goroutine 110 [running]:
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/pdata/internal.(*State).AssertMutable(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/internal/state.go:20
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/pdata/pmetric.NumberDataPoint.SetStartTimestamp(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/pmetric/generated_numberdatapoint.go:61
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*lastValueAccumulator).accumulateSum(0xc002b46780, {0xc002d701c0?, 0xc0021fe8f0?}, {0xc002b66460?, 0xc0021fe8f0?}, {0xc002d5c138?, 0xc0021fe8f0?}, {0xc15187eb06ebdf7a, 0x2436bf76f, 0xdb89900})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/accumulator.go:205 +0xe65
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*lastValueAccumulator).addMetric(0xc002b46780, {0xc002d701c0?, 0xc0021fe8f0?}, {0xc002b66460?, 0xc0021fe8f0?}, {0xc002d5c138?, 0xc0021fe8f0?}, {0xc15187eb06ebdf7a, 0x2436bf76f, 0xdb89900})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/accumulator.go:85 +0x1fc
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*lastValueAccumulator).Accumulate(0x36d6ac567?, {0xc002d5c120?, 0xc0021fe8f0?})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/accumulator.go:71 +0x10f
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*collector).processMetrics(...)
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/collector.go:92
metrics-poc-otel-collector-1  | github.com/open-telemetry/opentelemetry-collector-contrib/exporter/prometheusexporter.(*prometheusExporter).ConsumeMetrics(0xc002ad3400, {0xc0005b76e0?, 0xc002869a90?}, {0xc002202a68?, 0xc0021fe8f0?})
metrics-poc-otel-collector-1  |         github.com/open-telemetry/opentelemetry-collector-contrib/exporter/[email protected]/prometheus.go:85 +0x5d
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*metricsRequest).Export(0x8fb5890?, {0x8fb5858?, 0xc002ed8de0?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/metrics.go:58 +0x37
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*timeoutSender).send(0xc0021d75a0?, {0x8fb5890?, 0xc002ed8db0?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/timeout_sender.go:38 +0x90
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*baseRequestSender).send(0xc002ad3500?, {0x8fb5890?, 0xc002ed8db0?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/common.go:33 +0x36
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*metricsSenderWithObservability).send(0xc002b468d0, {0x8fb5890?, 0xc002b46b10?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/metrics.go:173 +0x84
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*baseRequestSender).send(0xc002b466f0?, {0x8fb5890?, 0xc002b46b10?}, {0x8f83720?, 0xc002202c60?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/common.go:33 +0x36
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.(*baseExporter).send(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/common.go:189
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/exporter/exporterhelper.NewMetricsExporter.func1({0x8fb5890, 0xc002b46b10}, {0xc002202a68?, 0xc0021fe8f0?})
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/exporterhelper/metrics.go:98 +0xed
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/consumer.ConsumeMetricsFunc.ConsumeMetrics(...)
metrics-poc-otel-collector-1  |         go.opentelemetry.io/collector/[email protected]/metrics.go:25
metrics-poc-otel-collector-1  | go.opentelemetry.io/collector/internal/fanoutconsumer.(*metricsConsumer).ConsumeMetrics(0xc002869f80?, {0x8fb5890, 0xc002b46b10}, {0xc002202a68?, 0xc0021fe8f0?})

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions