diff --git a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricToDiskExporter.java b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricToDiskExporter.java index e5a7d7bee..67b816442 100644 --- a/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricToDiskExporter.java +++ b/disk-buffering/src/main/java/io/opentelemetry/contrib/disk/buffering/MetricToDiskExporter.java @@ -12,10 +12,10 @@ import io.opentelemetry.sdk.metrics.InstrumentType; import io.opentelemetry.sdk.metrics.data.AggregationTemporality; import io.opentelemetry.sdk.metrics.data.MetricData; +import io.opentelemetry.sdk.metrics.export.AggregationTemporalitySelector; import io.opentelemetry.sdk.metrics.export.MetricExporter; import java.io.IOException; import java.util.Collection; -import java.util.function.Function; /** * This class implements a {@link MetricExporter} that delegates to an instance of {@code @@ -24,22 +24,17 @@ public class MetricToDiskExporter implements MetricExporter { private final ToDiskExporter delegate; - private final Function typeToTemporality; + private final AggregationTemporalitySelector aggregationTemporalitySelector; /** * Creates a new MetricToDiskExporter that will buffer Metric telemetry on disk storage. * * @param delegate - The MetricExporter to delegate to if disk writing fails. * @param config - The StorageConfiguration that specifies how storage is managed. - * @param typeToTemporality - The function that maps an InstrumentType into an - * AggregationTemporality. * @return A new MetricToDiskExporter instance. * @throws IOException if the delegate ToDiskExporter could not be created. */ - public static MetricToDiskExporter create( - MetricExporter delegate, - StorageConfiguration config, - Function typeToTemporality) + public static MetricToDiskExporter create(MetricExporter delegate, StorageConfiguration config) throws IOException { ToDiskExporter toDisk = ToDiskExporter.builder() @@ -48,15 +43,14 @@ public static MetricToDiskExporter create( .setSerializer(SignalSerializer.ofMetrics()) .setExportFunction(delegate::export) .build(); - return new MetricToDiskExporter(toDisk, typeToTemporality); + return new MetricToDiskExporter(toDisk, delegate); } // VisibleForTesting MetricToDiskExporter( - ToDiskExporter delegate, - Function typeToTemporality) { + ToDiskExporter delegate, AggregationTemporalitySelector selector) { this.delegate = delegate; - this.typeToTemporality = typeToTemporality; + this.aggregationTemporalitySelector = selector; } @Override @@ -81,6 +75,6 @@ public CompletableResultCode shutdown() { @Override public AggregationTemporality getAggregationTemporality(InstrumentType instrumentType) { - return typeToTemporality.apply(instrumentType); + return aggregationTemporalitySelector.getAggregationTemporality(instrumentType); } } diff --git a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java index 61a6f90d2..84b71fcb8 100644 --- a/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java +++ b/disk-buffering/src/test/java/io/opentelemetry/contrib/disk/buffering/IntegrationTest.java @@ -85,9 +85,7 @@ void setUp() throws IOException { memoryMetricExporter = InMemoryMetricExporter.create(); ToDiskExporter toDiskMetricExporter = buildToDiskExporter(SignalSerializer.ofMetrics(), memoryMetricExporter::export); - metricToDiskExporter = - new MetricToDiskExporter( - toDiskMetricExporter, memoryMetricExporter::getAggregationTemporality); + metricToDiskExporter = new MetricToDiskExporter(toDiskMetricExporter, memoryMetricExporter); meterProvider = createMeterProvider(metricToDiskExporter); meter = meterProvider.get("MetricInstrumentationScope");