Skip to content

Commit 8f081ba

Browse files
authored
Remove AggregationTemporality from View configuration API (#3805)
Update all tests / use cases to leverage exporter-based configuration.
1 parent 872c86c commit 8f081ba

16 files changed

Lines changed: 44 additions & 221 deletions

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/state/AsynchronousMetricStorage.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ public final class AsynchronousMetricStorage<T> implements MetricStorage {
3838
private final AsyncAccumulator<T> asyncAccumulator;
3939
private final TemporalMetricStorage<T> storage;
4040
private final Runnable metricUpdater;
41-
@Nullable private final AggregationTemporality configuredTemporality;
4241

4342
/** Constructs asynchronous metric storage which stores nothing. */
4443
public static MetricStorage empty() {
@@ -78,11 +77,7 @@ public void observe(double value) {
7877
}
7978
};
8079
return new AsynchronousMetricStorage<>(
81-
metricDescriptor,
82-
aggregator,
83-
measurementAccumulator,
84-
() -> metricUpdater.accept(result),
85-
view.getAggregation().getConfiguredTemporality());
80+
metricDescriptor, aggregator, measurementAccumulator, () -> metricUpdater.accept(result));
8681
}
8782

8883
/** Constructs storage for {@code long} valued instruments. */
@@ -114,24 +109,18 @@ public void observe(long value) {
114109
}
115110
};
116111
return new AsynchronousMetricStorage<>(
117-
metricDescriptor,
118-
aggregator,
119-
measurementAccumulator,
120-
() -> metricUpdater.accept(result),
121-
view.getAggregation().getConfiguredTemporality());
112+
metricDescriptor, aggregator, measurementAccumulator, () -> metricUpdater.accept(result));
122113
}
123114

124115
private AsynchronousMetricStorage(
125116
MetricDescriptor metricDescriptor,
126117
Aggregator<T> aggregator,
127118
AsyncAccumulator<T> asyncAccumulator,
128-
Runnable metricUpdater,
129-
@Nullable AggregationTemporality configuredTemporality) {
119+
Runnable metricUpdater) {
130120
this.metricDescriptor = metricDescriptor;
131121
this.asyncAccumulator = asyncAccumulator;
132122
this.metricUpdater = metricUpdater;
133123
this.storage = new TemporalMetricStorage<>(aggregator, /* isSynchronous= */ false);
134-
this.configuredTemporality = configuredTemporality;
135124
}
136125

137126
@Override
@@ -145,9 +134,7 @@ public MetricData collectAndReset(
145134
boolean suppressSynchronousCollection) {
146135
AggregationTemporality temporality =
147136
TemporalityUtils.resolveTemporality(
148-
collectionInfo.getSupportedAggregation(),
149-
collectionInfo.getPreferredAggregation(),
150-
configuredTemporality);
137+
collectionInfo.getSupportedAggregation(), collectionInfo.getPreferredAggregation());
151138
collectLock.lock();
152139
try {
153140
metricUpdater.run();

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/state/DefaultSynchronousMetricStorage.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,15 @@ public final class DefaultSynchronousMetricStorage<T> implements SynchronousMetr
3030
private final DeltaMetricStorage<T> deltaMetricStorage;
3131
private final TemporalMetricStorage<T> temporalMetricStorage;
3232
private final AttributesProcessor attributesProcessor;
33-
@Nullable private final AggregationTemporality configuredTemporality;
3433

3534
DefaultSynchronousMetricStorage(
3635
MetricDescriptor metricDescriptor,
3736
Aggregator<T> aggregator,
38-
AttributesProcessor attributesProcessor,
39-
@Nullable AggregationTemporality configuredTemporality) {
37+
AttributesProcessor attributesProcessor) {
4038
this.attributesProcessor = attributesProcessor;
4139
this.metricDescriptor = metricDescriptor;
4240
this.deltaMetricStorage = new DeltaMetricStorage<>(aggregator);
4341
this.temporalMetricStorage = new TemporalMetricStorage<>(aggregator, /* isSynchronous= */ true);
44-
this.configuredTemporality = configuredTemporality;
4542
}
4643

4744
// This is a storage handle to use when the attributes processor requires
@@ -108,9 +105,7 @@ public MetricData collectAndReset(
108105
boolean suppressSynchronousCollection) {
109106
AggregationTemporality temporality =
110107
TemporalityUtils.resolveTemporality(
111-
collectionInfo.getSupportedAggregation(),
112-
collectionInfo.getPreferredAggregation(),
113-
configuredTemporality);
108+
collectionInfo.getSupportedAggregation(), collectionInfo.getPreferredAggregation());
114109
Map<Attributes, T> result =
115110
deltaMetricStorage.collectFor(
116111
collectionInfo.getCollector(),

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/state/SynchronousMetricStorage.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ static <T> SynchronousMetricStorage create(
4646
return empty();
4747
}
4848
return new DefaultSynchronousMetricStorage<>(
49-
metricDescriptor,
50-
aggregator,
51-
view.getAttributesProcessor(),
52-
view.getAggregation().getConfiguredTemporality());
49+
metricDescriptor, aggregator, view.getAttributesProcessor());
5350
}
5451
}

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/internal/state/TemporalityUtils.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,9 @@ private TemporalityUtils() {}
1717
*
1818
* @param supported All aggregation temporalities supported by the exporter.
1919
* @param preferred The preferred temporality of the exporter.
20-
* @param configured The aggregation temporality configured via the View interface.
2120
*/
2221
static AggregationTemporality resolveTemporality(
23-
EnumSet<AggregationTemporality> supported,
24-
@Nullable AggregationTemporality preferred,
25-
@Nullable AggregationTemporality configured) {
26-
// Return the configured temporality, if it exists and is supported.
27-
if (configured != null && supported.contains(configured)) {
28-
return configured;
29-
}
22+
EnumSet<AggregationTemporality> supported, @Nullable AggregationTemporality preferred) {
3023
// Next assume preferred should always win.
3124
if (preferred != null) {
3225
return preferred;

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/view/Aggregation.java

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
package io.opentelemetry.sdk.metrics.view;
77

88
import io.opentelemetry.sdk.metrics.common.InstrumentDescriptor;
9-
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
109
import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter;
1110
import io.opentelemetry.sdk.metrics.internal.aggregator.Aggregator;
12-
import io.opentelemetry.sdk.metrics.internal.aggregator.ExplicitBucketHistogramUtils;
1311
import java.util.List;
1412
import javax.annotation.Nullable;
1513

@@ -33,16 +31,6 @@ public abstract class Aggregation {
3331
public abstract <T> Aggregator<T> createAggregator(
3432
InstrumentDescriptor instrumentDescriptor, ExemplarFilter exemplarFilter);
3533

36-
/**
37-
* Returns the user-configured {@link AggregationTemporality} for this aggregation.
38-
*
39-
* @return the temporality, or {code null} if no temporality was specified.
40-
*/
41-
@Nullable
42-
public AggregationTemporality getConfiguredTemporality() {
43-
return null;
44-
}
45-
4634
/** The None Aggregation will ignore/drop all Instrument Measurements. */
4735
public static Aggregation none() {
4836
return NoAggregation.INSTANCE;
@@ -53,11 +41,6 @@ public static Aggregation defaultAggregation() {
5341
return DefaultAggregation.INSTANCE;
5442
}
5543

56-
/** Instrument measurements will be combined into a metric Sum. */
57-
public static Aggregation sum(AggregationTemporality temporality) {
58-
return new SumAggregation(temporality);
59-
}
60-
6144
/** Instrument measurements will be combined into a metric Sum. */
6245
public static Aggregation sum() {
6346
return SumAggregation.DEFAULT;
@@ -75,36 +58,14 @@ public static Aggregation explicitBucketHistogram() {
7558
return ExplicitBucketHistogramAggregation.DEFAULT;
7659
}
7760

78-
/**
79-
* Aggregates measurements into an explicit bucket histogram using the default bucket boundaries.
80-
*
81-
* @param temporality Whether to report DELTA or CUMULATIVE metrics.
82-
*/
83-
public static Aggregation explicitBucketHistogram(AggregationTemporality temporality) {
84-
return explicitBucketHistogram(
85-
temporality, ExplicitBucketHistogramUtils.DEFAULT_HISTOGRAM_BUCKET_BOUNDARIES);
86-
}
87-
8861
/**
8962
* Aggregates measurements into an explicit bucket histogram.
9063
*
9164
* @param bucketBoundaries A list of (inclusive) upper bounds for the histogram. Should be in
9265
* order from lowest to highest.
9366
*/
9467
public static Aggregation explicitBucketHistogram(List<Double> bucketBoundaries) {
95-
return new ExplicitBucketHistogramAggregation(null, bucketBoundaries);
96-
}
97-
98-
/**
99-
* Aggregates measurements into an explicit bucket histogram.
100-
*
101-
* @param temporality Whether to report DELTA or CUMULATIVE metrics.
102-
* @param bucketBoundaries A list of (inclusive) upper bounds for the histogram. Should be in
103-
* order from lowest to highest.
104-
*/
105-
public static Aggregation explicitBucketHistogram(
106-
AggregationTemporality temporality, List<Double> bucketBoundaries) {
107-
return new ExplicitBucketHistogramAggregation(temporality, bucketBoundaries);
68+
return new ExplicitBucketHistogramAggregation(bucketBoundaries);
10869
}
10970

11071
/** Aggregates measurements using the best available Histogram. */

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/view/ExplicitBucketHistogramAggregation.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,24 @@
77

88
import io.opentelemetry.sdk.common.Clock;
99
import io.opentelemetry.sdk.metrics.common.InstrumentDescriptor;
10-
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1110
import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter;
1211
import io.opentelemetry.sdk.metrics.exemplar.ExemplarReservoir;
1312
import io.opentelemetry.sdk.metrics.internal.aggregator.Aggregator;
1413
import io.opentelemetry.sdk.metrics.internal.aggregator.DoubleHistogramAggregator;
1514
import io.opentelemetry.sdk.metrics.internal.aggregator.ExplicitBucketHistogramUtils;
1615
import java.util.List;
17-
import javax.annotation.Nullable;
1816

1917
/** Explicit bucket histogram aggregation configuration. */
2018
class ExplicitBucketHistogramAggregation extends Aggregation {
2119

2220
static final Aggregation DEFAULT =
2321
new ExplicitBucketHistogramAggregation(
24-
null, ExplicitBucketHistogramUtils.DEFAULT_HISTOGRAM_BUCKET_BOUNDARIES);
22+
ExplicitBucketHistogramUtils.DEFAULT_HISTOGRAM_BUCKET_BOUNDARIES);
2523

26-
@Nullable private final AggregationTemporality temporality;
2724
private final List<Double> bucketBoundaries;
2825
private final double[] bucketBoundaryArray;
2926

30-
ExplicitBucketHistogramAggregation(
31-
@Nullable AggregationTemporality temporality, List<Double> bucketBoundaries) {
32-
this.temporality = temporality;
27+
ExplicitBucketHistogramAggregation(List<Double> bucketBoundaries) {
3328
this.bucketBoundaries = bucketBoundaries;
3429
// We need to fail here if our bucket boundaries are ill-configured.
3530
this.bucketBoundaryArray = ExplicitBucketHistogramUtils.createBoundaryArray(bucketBoundaries);
@@ -40,12 +35,6 @@ public List<Double> getBucketBoundaries() {
4035
return bucketBoundaries;
4136
}
4237

43-
@Override
44-
@Nullable
45-
public AggregationTemporality getConfiguredTemporality() {
46-
return temporality;
47-
}
48-
4938
@Override
5039
@SuppressWarnings("unchecked")
5140
public <T> Aggregator<T> createAggregator(
@@ -62,6 +51,6 @@ public <T> Aggregator<T> createAggregator(
6251

6352
@Override
6453
public String toString() {
65-
return "ExplicitBucketHistogramAggregation(" + temporality + ")";
54+
return "ExplicitBucketHistogramAggregation(" + bucketBoundaries.toString() + ")";
6655
}
6756
}

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/view/SumAggregation.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,18 @@
88
import io.opentelemetry.sdk.common.Clock;
99
import io.opentelemetry.sdk.internal.RandomSupplier;
1010
import io.opentelemetry.sdk.metrics.common.InstrumentDescriptor;
11-
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1211
import io.opentelemetry.sdk.metrics.exemplar.ExemplarFilter;
1312
import io.opentelemetry.sdk.metrics.exemplar.ExemplarReservoir;
1413
import io.opentelemetry.sdk.metrics.internal.aggregator.Aggregator;
1514
import io.opentelemetry.sdk.metrics.internal.aggregator.DoubleSumAggregator;
1615
import io.opentelemetry.sdk.metrics.internal.aggregator.LongSumAggregator;
1716
import java.util.function.Supplier;
18-
import javax.annotation.Nullable;
1917

2018
/** A sum aggregation configuration. */
2119
class SumAggregation extends Aggregation {
22-
static final SumAggregation DEFAULT = new SumAggregation(null);
20+
static final SumAggregation DEFAULT = new SumAggregation();
2321

24-
@Nullable private final AggregationTemporality temporality;
25-
26-
SumAggregation(@Nullable AggregationTemporality temporality) {
27-
this.temporality = temporality;
28-
}
29-
30-
@Override
31-
public AggregationTemporality getConfiguredTemporality() {
32-
return temporality;
33-
}
22+
private SumAggregation() {}
3423

3524
@Override
3625
@SuppressWarnings("unchecked")
@@ -55,6 +44,6 @@ public <T> Aggregator<T> createAggregator(
5544

5645
@Override
5746
public String toString() {
58-
return "SumAggregation(" + temporality + ")";
47+
return "SumAggregation";
5948
}
6049
}

sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/SdkDoubleSumObserverTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.opentelemetry.api.common.Attributes;
1212
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
1313
import io.opentelemetry.sdk.metrics.common.InstrumentType;
14-
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1514
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
1615
import io.opentelemetry.sdk.metrics.view.Aggregation;
1716
import io.opentelemetry.sdk.metrics.view.InstrumentSelector;
@@ -110,17 +109,15 @@ void collectMetrics_WithOneRecord() {
110109
@Test
111110
@SuppressWarnings("unchecked")
112111
void collectMetrics_DeltaSumAggregator() {
113-
InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.create();
112+
InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.createDelta();
114113
SdkMeterProvider sdkMeterProvider =
115114
sdkMeterProviderBuilder
116115
.registerMetricReader(sdkMeterReader)
117116
.registerView(
118117
InstrumentSelector.builder()
119118
.setInstrumentType(InstrumentType.OBSERVABLE_SUM)
120119
.build(),
121-
View.builder()
122-
.setAggregation(Aggregation.sum(AggregationTemporality.DELTA))
123-
.build())
120+
View.builder().setAggregation(Aggregation.sum()).build())
124121
.build();
125122
sdkMeterProvider
126123
.get(getClass().getName())

sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/SdkDoubleUpDownSumObserverTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.opentelemetry.api.common.Attributes;
1212
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
1313
import io.opentelemetry.sdk.metrics.common.InstrumentType;
14-
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1514
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
1615
import io.opentelemetry.sdk.metrics.view.Aggregation;
1716
import io.opentelemetry.sdk.metrics.view.InstrumentSelector;
@@ -106,17 +105,15 @@ void collectMetrics_WithOneRecord() {
106105
@Test
107106
@SuppressWarnings("unchecked")
108107
void collectMetrics_DeltaSumAggregator() {
109-
InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.create();
108+
InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.createDelta();
110109
SdkMeterProvider sdkMeterProvider =
111110
sdkMeterProviderBuilder
112111
.registerMetricReader(sdkMeterReader)
113112
.registerView(
114113
InstrumentSelector.builder()
115114
.setInstrumentType(InstrumentType.OBSERVABLE_UP_DOWN_SUM)
116115
.build(),
117-
View.builder()
118-
.setAggregation(Aggregation.sum(AggregationTemporality.DELTA))
119-
.build())
116+
View.builder().setAggregation(Aggregation.sum()).build())
120117
.build();
121118
sdkMeterProvider
122119
.get(getClass().getName())

sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/SdkLongSumObserverTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.opentelemetry.api.common.Attributes;
1212
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
1313
import io.opentelemetry.sdk.metrics.common.InstrumentType;
14-
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
1514
import io.opentelemetry.sdk.metrics.testing.InMemoryMetricReader;
1615
import io.opentelemetry.sdk.metrics.view.Aggregation;
1716
import io.opentelemetry.sdk.metrics.view.InstrumentSelector;
@@ -104,17 +103,15 @@ void collectMetrics_WithOneRecord() {
104103
@Test
105104
@SuppressWarnings("unchecked")
106105
void collectMetrics_DeltaSumAggregator() {
107-
InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.create();
106+
InMemoryMetricReader sdkMeterReader = InMemoryMetricReader.createDelta();
108107
SdkMeterProvider sdkMeterProvider =
109108
sdkMeterProviderBuilder
110109
.registerMetricReader(sdkMeterReader)
111110
.registerView(
112111
InstrumentSelector.builder()
113112
.setInstrumentType(InstrumentType.OBSERVABLE_SUM)
114113
.build(),
115-
View.builder()
116-
.setAggregation(Aggregation.sum(AggregationTemporality.DELTA))
117-
.build())
114+
View.builder().setAggregation(Aggregation.sum()).build())
118115
.build();
119116
sdkMeterProvider
120117
.get(getClass().getName())

0 commit comments

Comments
 (0)