Repository navigation
Conversation
Pull request dashboard statusWaiting on the author · refreshed 2026-11-13 05:43 UTC Respond to 1 review item (e.g. link a commit, explain why not, ask a follow-up):
Status above doesn't look right?
|
1c8b5e0 to
5b4722c
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #9020 +/- ##
============================================
+ Coverage 90.44% 90.45% +0.01%
- Complexity 11171 11237 +66
============================================
Files 1032 1034 +2
Lines 30451 30664 +213
Branches 3974 4021 +47
============================================
+ Hits 27540 27736 +196
- Misses 1935 1942 +7
- Partials 976 986 +10 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
5b4722c to
71baf95
Compare
845fbfd to
6d78faf
Compare
23adc54 to
f6bd08b
Compare
Implement experimental composable view matching mode according to the OpenTelemetry Metrics SDK specification and declarative config schema. - Introduce ViewMatchingMode (INDEPENDENT, COMPOSABLE). - Track explicit View properties in ViewBuilder, View, and RegisteredView to distinguish configured fields from defaults. - Implement composable view resolution in ViewRegistry: stream grouping by configured name, last-wins attribute/cardinality merging, backward-scanning aggregation compatibility fallback, and attribute filter conjunction. - Add reflection bridge in SdkMeterProviderUtil to safely configure ViewMatchingMode on SdkMeterProviderBuilder without modifying public 1.x APIs. - Wire view_matching_mode/development in MeterProviderFactory for declarative configuration. - Add comprehensive unit and integration tests. Fixes open-telemetry#9013
f6bd08b to
0dbd6d0
Compare
dashpole
left a comment
There was a problem hiding this comment.
I validated that this properly implements the composable view spec.
| assertThat(point.getValue()).isEqualTo(1); | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Because attribute filter functions cannot be compared for equality, this test actually emits 2 conflicting streams instead of deduplicating them (unlike the test right below it), and the for loop would pass even if metrics were empty. My suggestion would be to either remove this test or assert assertThat(metrics).isNotEmpty() before the loop.
| abstract Predicate<String> getExplicitAttributeFilter(); | ||
|
|
||
| @Nullable | ||
| abstract Integer getExplicitCardinalityLimit(); |
There was a problem hiding this comment.
Including getExplicitAggregation(), getExplicitAttributeFilter(), and getExplicitCardinalityLimit() in View.equals means View.builder().build() and View.builder().setAggregation(Aggregation.defaultAggregation()).build() are no longer considered equal. Should we exclude those three internal tracking fields from equals and hashCode so View equality only compares the effective view settings?
… remove redundant test
|
Implement experimental composable view matching mode according to the OpenTelemetry Metrics SDK specification and declarative config schema.
Fixes #9013