PeriodicMetricReader / MetricReaderInstrumentation records otel.sdk.metric_reader.collection.duration unconditionally whenever a real MeterProvider is available — it never checks otel.experimental.sdk.telemetry.version (OTEL_EXPERIMENTAL_SDK_TELEMETRY_VERSION).
This is inconsistent with the rest of the self-observability suite: TracerProviderConfiguration and LoggerProviderConfiguration both call InternalTelemetryConfiguration.getVersion(config) before enabling span/log processor self-observability, and OtlpConfigUtil does the same for OTLP exporter self-observability. There's no equivalent check in the metric reader path.
Repro: run any service with metrics enabled via the Java agent/autoconfigure, without setting OTEL_EXPERIMENTAL_SDK_TELEMETRY_VERSION — otel.sdk.metric_reader.collection.duration still shows up, while span/log/exporter self-observability correctly stays off.
PeriodicMetricReader/MetricReaderInstrumentationrecordsotel.sdk.metric_reader.collection.durationunconditionally whenever a realMeterProvideris available — it never checksotel.experimental.sdk.telemetry.version(OTEL_EXPERIMENTAL_SDK_TELEMETRY_VERSION).This is inconsistent with the rest of the self-observability suite:
TracerProviderConfigurationandLoggerProviderConfigurationboth callInternalTelemetryConfiguration.getVersion(config)before enabling span/log processor self-observability, andOtlpConfigUtildoes the same for OTLP exporter self-observability. There's no equivalent check in the metric reader path.Repro: run any service with metrics enabled via the Java agent/autoconfigure, without setting
OTEL_EXPERIMENTAL_SDK_TELEMETRY_VERSION—otel.sdk.metric_reader.collection.durationstill shows up, while span/log/exporter self-observability correctly stays off.