Skip to content

Metric description conflict: duplicate pending_sends_buffered metric across runtime-control and completion scopes #2734

@andborja

Description

@andborja

Pre-filing checklist

  • I searched existing issues and didn't find a duplicate

Component(s)

Rust OTAP dataflow (rust/otap-dataflow/)

Bug Description

Description:

When the Prometheus pull exporter is configured, every scrape logs:

"Instrument description conflict, using existing"

Two metric sets in control_plane_metrics.rs declare a metric with the same name pending_sends.buffered but different descriptions:

The opentelemetry-prometheus exporter flattens all OTel scopes into a single Prometheus namespace keyed by metric name. When both scopes produce a metric named pending_sends_buffered, the first description seen wins and the second is silently dropped (see validate_metrics in the exporter):

https://github.com/open-telemetry/opentelemetry-rust/blob/main/opentelemetry-prometheus/src/lib.rs#L452

Although this is only a description conflict (both are Gauge, so no data is lost), it produces a noisy warning on every Prometheus scrape and means one of the two metrics loses its description.

Suggested fix:

Rename the metrics to disambiguate them.

Both introduced in commit 3dca283.

Steps to Reproduce

Configure a prometheus exporter for internal telemetry and run an instance of dataflow engine. Check the logs.

Expected Behavior

The conflict to be resolved, so the log message is no longer present.

Actual Behavior

The log message is present every time a scrapper is called over the prometheus endpoint.

OTel-Arrow Version

latest

Environment

No response

Configuration

Log Output

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions