You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fixes#3292
This PR implements configurable aggregation cardinality limits at three
priority levels as specified by the OpenTelemetry specification:
1. View-level: cardinality limit defined in a View's AggregationConfig
2. MetricReader-level: default limits per instrument type in the reader
3. SDK default: fallback to 2000 if neither above is defined
Changes:
- Add CardinalityLimitOptions to MetricReader with per-instrument-type limits
- Implement GetCardinalityLimit() in MetricReader and MetricCollector
- Add GetReaderCardinalityLimit() to MeterContext (returns max across readers)
- Update storage constructors to accept owned AggregationConfig for lifetime management
- Wire view-level cardinality from YAML config in SdkBuilder
- Wire reader-level cardinality from YAML config in SdkBuilder
- Apply reader-level fallback in Meter when view config is absent
The implementation follows the spec priority order: View config > Reader config > SDK default (2000).
Files modified:
- sdk/include/opentelemetry/sdk/metrics/metric_reader.h
- sdk/src/metrics/metric_reader.cc
- sdk/include/opentelemetry/sdk/metrics/state/metric_collector.h
- sdk/src/metrics/state/metric_collector.cc
- sdk/include/opentelemetry/sdk/metrics/meter_context.h
- sdk/src/metrics/meter_context.cc
- sdk/include/opentelemetry/sdk/metrics/state/sync_metric_storage.h
- sdk/include/opentelemetry/sdk/metrics/state/async_metric_storage.h
- sdk/src/metrics/meter.cc
- sdk/src/configuration/sdk_builder.cc
0 commit comments