Skip to content

Commit 2c379c7

Browse files
authored
Stabilize ExemplarFilter (#7768)
1 parent 93a5b1b commit 2c379c7

File tree

37 files changed

+202
-150
lines changed

37 files changed

+202
-150
lines changed
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,10 @@
11
Comparing source compatibility of opentelemetry-sdk-metrics-1.56.0-SNAPSHOT.jar against opentelemetry-sdk-metrics-1.55.0.jar
2-
No changes.
2+
+++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.metrics.ExemplarFilter (not serializable)
3+
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
4+
+++ NEW SUPERCLASS: java.lang.Object
5+
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.metrics.ExemplarFilter alwaysOff()
6+
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.metrics.ExemplarFilter alwaysOn()
7+
+++ NEW METHOD: PUBLIC(+) STATIC(+) io.opentelemetry.sdk.metrics.ExemplarFilter traceBased()
8+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder (not serializable)
9+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
10+
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder setExemplarFilter(io.opentelemetry.sdk.metrics.ExemplarFilter)

integration-tests/otlp/src/main/java/io/opentelemetry/integrationtest/OtlpExporterIntegrationTest.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,10 @@
6565
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
6666
import io.opentelemetry.sdk.logs.export.BatchLogRecordProcessor;
6767
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
68+
import io.opentelemetry.sdk.metrics.ExemplarFilter;
6869
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
69-
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
7070
import io.opentelemetry.sdk.metrics.export.MetricExporter;
7171
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
72-
import io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil;
73-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
7472
import io.opentelemetry.sdk.resources.Resource;
7573
import io.opentelemetry.sdk.trace.IdGenerator;
7674
import io.opentelemetry.sdk.trace.SdkTracerProvider;
@@ -461,18 +459,16 @@ void testOtlpHttpMetricExport_mtls() throws Exception {
461459
}
462460

463461
private static void testMetricExport(MetricExporter metricExporter) {
464-
SdkMeterProviderBuilder meterProviderBuilder =
462+
SdkMeterProvider meterProvider =
465463
SdkMeterProvider.builder()
466464
.setResource(RESOURCE)
467465
.registerMetricReader(
468466
PeriodicMetricReader.builder(metricExporter)
469467
.setInterval(Duration.ofSeconds(Integer.MAX_VALUE))
470-
.build());
471-
472-
// Enable alwaysOn exemplar filter, instead of default traceBased filter
473-
SdkMeterProviderUtil.setExemplarFilter(meterProviderBuilder, ExemplarFilter.alwaysOn());
474-
475-
SdkMeterProvider meterProvider = meterProviderBuilder.build();
468+
.build())
469+
// Enable alwaysOn exemplar filter, instead of default traceBased filter
470+
.setExemplarFilter(ExemplarFilter.alwaysOn())
471+
.build();
476472

477473
Meter meter = meterProvider.meterBuilder(OtlpExporterIntegrationTest.class.getName()).build();
478474

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MeterProviderConfiguration.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@
99
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1010
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
1111
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
12+
import io.opentelemetry.sdk.metrics.ExemplarFilter;
1213
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
1314
import io.opentelemetry.sdk.metrics.export.MetricExporter;
1415
import io.opentelemetry.sdk.metrics.export.MetricReader;
15-
import io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil;
16-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
1716
import io.opentelemetry.sdk.metrics.internal.state.MetricStorage;
1817
import java.io.Closeable;
1918
import java.util.Collections;
@@ -43,14 +42,14 @@ static void configureMeterProvider(
4342
config.getString("otel.metrics.exemplar.filter", "trace_based").toLowerCase(Locale.ROOT);
4443
switch (exemplarFilter) {
4544
case "always_off":
46-
SdkMeterProviderUtil.setExemplarFilter(meterProviderBuilder, ExemplarFilter.alwaysOff());
45+
meterProviderBuilder.setExemplarFilter(ExemplarFilter.alwaysOff());
4746
break;
4847
case "always_on":
49-
SdkMeterProviderUtil.setExemplarFilter(meterProviderBuilder, ExemplarFilter.alwaysOn());
48+
meterProviderBuilder.setExemplarFilter(ExemplarFilter.alwaysOn());
5049
break;
5150
case "trace_based":
5251
default:
53-
SdkMeterProviderUtil.setExemplarFilter(meterProviderBuilder, ExemplarFilter.traceBased());
52+
meterProviderBuilder.setExemplarFilter(ExemplarFilter.traceBased());
5453
break;
5554
}
5655

sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/MeterProviderConfigurationTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
1515
import io.opentelemetry.sdk.metrics.internal.exemplar.AlwaysOffExemplarFilter;
1616
import io.opentelemetry.sdk.metrics.internal.exemplar.AlwaysOnExemplarFilter;
17-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
17+
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilterInternal;
1818
import io.opentelemetry.sdk.metrics.internal.exemplar.TraceBasedExemplarFilter;
1919
import java.util.ArrayList;
2020
import java.util.Collections;
@@ -45,7 +45,8 @@ void configureMeterProvider_ConfiguresExemplarFilter() {
4545
.isInstanceOf(AlwaysOnExemplarFilter.class);
4646
}
4747

48-
private static ObjectAssert<ExemplarFilter> assertExemplarFilter(Map<String, String> config) {
48+
private static ObjectAssert<ExemplarFilterInternal> assertExemplarFilter(
49+
Map<String, String> config) {
4950
Map<String, String> configWithDefault = new HashMap<>(config);
5051
configWithDefault.put("otel.metrics.exporter", "none");
5152
SdkMeterProviderBuilder builder = SdkMeterProvider.builder();
@@ -57,6 +58,7 @@ private static ObjectAssert<ExemplarFilter> assertExemplarFilter(Map<String, Str
5758
(a, b) -> a,
5859
new ArrayList<>());
5960
return assertThat(builder)
60-
.extracting("exemplarFilter", as(InstanceOfAssertFactories.type(ExemplarFilter.class)));
61+
.extracting(
62+
"exemplarFilter", as(InstanceOfAssertFactories.type(ExemplarFilterInternal.class)));
6163
}
6264
}

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ExemplarFilterFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
99
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.MeterProviderModel;
10-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
10+
import io.opentelemetry.sdk.metrics.ExemplarFilter;
1111

1212
final class ExemplarFilterFactory
1313
implements Factory<MeterProviderModel.ExemplarFilter, ExemplarFilter> {

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ public SdkMeterProviderBuilder create(
9797

9898
MeterProviderModel.ExemplarFilter exemplarFilterModel = model.getExemplarFilter();
9999
if (exemplarFilterModel != null) {
100-
SdkMeterProviderUtil.setExemplarFilter(
101-
builder, ExemplarFilterFactory.getInstance().create(exemplarFilterModel, context));
100+
builder.setExemplarFilter(
101+
ExemplarFilterFactory.getInstance().create(exemplarFilterModel, context));
102102
}
103103

104104
return builder;

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ExemplarFilterFactoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import static org.mockito.Mockito.mock;
1010

1111
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.MeterProviderModel;
12-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
12+
import io.opentelemetry.sdk.metrics.ExemplarFilter;
1313
import java.util.stream.Stream;
1414
import org.junit.jupiter.params.ParameterizedTest;
1515
import org.junit.jupiter.params.provider.Arguments;

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/MeterProviderFactoryTest.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

8-
import static io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil.setExemplarFilter;
98
import static io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil.setMeterConfigurator;
109
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
1110

@@ -25,12 +24,12 @@
2524
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ViewStreamModel;
2625
import io.opentelemetry.sdk.internal.ScopeConfigurator;
2726
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
27+
import io.opentelemetry.sdk.metrics.ExemplarFilter;
2828
import io.opentelemetry.sdk.metrics.InstrumentSelector;
2929
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
3030
import io.opentelemetry.sdk.metrics.View;
3131
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
3232
import io.opentelemetry.sdk.metrics.internal.MeterConfig;
33-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
3433
import java.io.Closeable;
3534
import java.util.ArrayList;
3635
import java.util.Collections;
@@ -94,16 +93,14 @@ private static Stream<Arguments> createArguments() {
9493
.withConfig(
9594
new ExperimentalMeterConfigModel().withDisabled(false)))))
9695
.withExemplarFilter(MeterProviderModel.ExemplarFilter.ALWAYS_ON),
97-
setExemplarFilter(
98-
setMeterConfigurator(
99-
SdkMeterProvider.builder(),
100-
ScopeConfigurator.<MeterConfig>builder()
101-
.setDefault(MeterConfig.disabled())
102-
.addCondition(
103-
ScopeConfiguratorBuilder.nameMatchesGlob("foo"),
104-
MeterConfig.enabled())
105-
.build()),
106-
ExemplarFilter.alwaysOn())
96+
setMeterConfigurator(
97+
SdkMeterProvider.builder(),
98+
ScopeConfigurator.<MeterConfig>builder()
99+
.setDefault(MeterConfig.disabled())
100+
.addCondition(
101+
ScopeConfiguratorBuilder.nameMatchesGlob("foo"), MeterConfig.enabled())
102+
.build())
103+
.setExemplarFilter(ExemplarFilter.alwaysOn())
107104
.registerMetricReader(
108105
PeriodicMetricReader.builder(OtlpHttpMetricExporter.getDefault()).build())
109106
.registerView(

sdk/metrics/src/jmh/java/io/opentelemetry/sdk/metrics/TestSdk.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.opentelemetry.api.metrics.MeterProvider;
1010
import io.opentelemetry.api.trace.Tracer;
1111
import io.opentelemetry.sdk.common.Clock;
12-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
1312
import io.opentelemetry.sdk.resources.Resource;
1413
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
1514
import io.opentelemetry.sdk.trace.SdkTracerProvider;

sdk/metrics/src/jmh/java/io/opentelemetry/sdk/metrics/internal/aggregator/HistogramCollectBenchmark.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,13 @@
99
import io.opentelemetry.api.metrics.DoubleHistogram;
1010
import io.opentelemetry.sdk.common.CompletableResultCode;
1111
import io.opentelemetry.sdk.metrics.Aggregation;
12+
import io.opentelemetry.sdk.metrics.ExemplarFilter;
1213
import io.opentelemetry.sdk.metrics.InstrumentType;
1314
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
14-
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
1515
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1616
import io.opentelemetry.sdk.metrics.data.MetricData;
1717
import io.opentelemetry.sdk.metrics.export.MetricExporter;
1818
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader;
19-
import io.opentelemetry.sdk.metrics.internal.SdkMeterProviderUtil;
20-
import io.opentelemetry.sdk.metrics.internal.exemplar.ExemplarFilter;
2119
import java.time.Duration;
2220
import java.util.ArrayList;
2321
import java.util.Collection;
@@ -64,7 +62,7 @@ public static class ThreadState {
6462

6563
@Setup
6664
public void setup() {
67-
SdkMeterProviderBuilder builder =
65+
SdkMeterProvider sdkMeterProvider =
6866
SdkMeterProvider.builder()
6967
.registerMetricReader(
7068
PeriodicMetricReader.builder(
@@ -74,10 +72,11 @@ public void setup() {
7472
aggregationTemporality, aggregationGenerator.aggregation))
7573
// Effectively disable periodic reading so reading is only done on #flush()
7674
.setInterval(Duration.ofSeconds(Integer.MAX_VALUE))
77-
.build());
78-
// Disable exemplars
79-
SdkMeterProviderUtil.setExemplarFilter(builder, ExemplarFilter.alwaysOff());
80-
sdkMeterProvider = builder.build();
75+
.build())
76+
// Disable exemplars
77+
.setExemplarFilter(ExemplarFilter.alwaysOff())
78+
.build();
79+
8180
histogram = sdkMeterProvider.get("meter").histogramBuilder("histogram").build();
8281

8382
random = new Random();

0 commit comments

Comments
 (0)