Skip to content

Commit 485f97b

Browse files
committed
move to predicate function
1 parent ea5bfd6 commit 485f97b

29 files changed

Lines changed: 181 additions & 108 deletions

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleCounter.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* A Counter instrument that records {@code double} values.
@@ -62,21 +63,23 @@ default boolean isEnabled() {
6263
void add(double value, Attributes attributes, Context context);
6364

6465
/**
65-
* Finish the instrument record.
66+
* Finish the recording of the instrument.
6667
*
67-
* @param attributes A set of attributes to identify the instrument.
68-
* @since 1.56.0
68+
* @param condition A function evaluating which instruments to remove
69+
* based on their attributes.
70+
* @since TODO
6971
*/
70-
default void finish(Attributes attributes) {
71-
finish(attributes, Context.current());
72+
default void finish(Function<Attributes, Boolean> condition) {
73+
finish(condition, Context.current());
7274
}
7375

7476
/**
75-
* Finish the instrument record.
77+
* Finish the recording of the instrument.
7678
*
77-
* @param attributes A set of attributes to identify the instrument.
79+
* @param condition A function evaluating which instruments to remove
80+
* based on their attributes.
7881
* @param context The explicit context to associate with this measurement.
79-
* @since 1.56.0
82+
* @since TODO
8083
*/
81-
default void finish(Attributes attributes, Context context) {}
84+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
8285
}

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleGauge.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* A gauge instrument that synchronously records {@code double} values.
@@ -56,21 +57,23 @@ default boolean isEnabled() {
5657
void set(double value, Attributes attributes, Context context);
5758

5859
/**
59-
* Finish the instrument record.
60+
* Finish the recording of the instrument.
6061
*
61-
* @param attributes A set of attributes to identify the instrument.
62-
* @since 1.56.0
62+
* @param condition A function evaluating which instruments to remove
63+
* based on their attributes.
64+
* @since TODO
6365
*/
64-
default void finish(Attributes attributes) {
65-
finish(attributes, Context.current());
66+
default void finish(Function<Attributes, Boolean> condition) {
67+
finish(condition, Context.current());
6668
}
6769

6870
/**
69-
* Finish the instrument record.
71+
* Finish the recording of the instrument.
7072
*
71-
* @param attributes A set of attributes to identify the instrument.
73+
* @param condition A function evaluating which instruments to remove
74+
* based on their attributes.
7275
* @param context The explicit context to associate with this measurement.
73-
* @since 1.56.0
76+
* @since TODO
7477
*/
75-
default void finish(Attributes attributes, Context context) {}
78+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
7679
}

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleHistogram.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* A Histogram instrument that records {@code double} values.
@@ -62,21 +63,23 @@ default boolean isEnabled() {
6263
void record(double value, Attributes attributes, Context context);
6364

6465
/**
65-
* Finish the instrument record.
66+
* Finish the recording of the instrument.
6667
*
67-
* @param attributes A set of attributes to identify the instrument.
68-
* @since 1.56.0
68+
* @param condition A function evaluating which instruments to remove
69+
* based on their attributes.
70+
* @since TODO
6971
*/
70-
default void finish(Attributes attributes) {
71-
finish(attributes, Context.current());
72+
default void finish(Function<Attributes, Boolean> condition) {
73+
finish(condition, Context.current());
7274
}
7375

7476
/**
75-
* Finish the instrument record.
77+
* Finish the recording of the instrument.
7678
*
77-
* @param attributes A set of attributes to identify the instrument.
79+
* @param condition A function evaluating which instruments to remove
80+
* based on their attributes.
7881
* @param context The explicit context to associate with this measurement.
79-
* @since 1.56.0
82+
* @since TODO
8083
*/
81-
default void finish(Attributes attributes, Context context) {}
84+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
8285
}

api/all/src/main/java/io/opentelemetry/api/metrics/DoubleUpDownCounter.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* An UpDownCounter instrument that records {@code double} values.
@@ -62,21 +63,23 @@ default boolean isEnabled() {
6263
void add(double value, Attributes attributes, Context context);
6364

6465
/**
65-
* Finish the instrument record.
66+
* Finish the recording of the instrument.
6667
*
67-
* @param attributes A set of attributes to identify the instrument.
68-
* @since 1.56.0
68+
* @param condition A function evaluating which instruments to remove
69+
* based on their attributes.
70+
* @since TODO
6971
*/
70-
default void finish(Attributes attributes) {
71-
finish(attributes, Context.current());
72+
default void finish(Function<Attributes, Boolean> condition) {
73+
finish(condition, Context.current());
7274
}
7375

7476
/**
75-
* Finish the instrument record.
77+
* Finish the recording of the instrument.
7678
*
77-
* @param attributes A set of attributes to identify the instrument.
79+
* @param condition A function evaluating which instruments to remove
80+
* based on their attributes.
7881
* @param context The explicit context to associate with this measurement.
79-
* @since 1.56.0
82+
* @since TODO
8083
*/
81-
default void finish(Attributes attributes, Context context) {}
84+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
8285
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongCounter.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* A Counter instrument that records {@code long} values.
@@ -62,21 +63,23 @@ default boolean isEnabled() {
6263
void add(long value, Attributes attributes, Context context);
6364

6465
/**
65-
* Finish the instrument record.
66+
* Finish the recording of the instrument.
6667
*
67-
* @param attributes A set of attributes to identify the instrument.
68-
* @since 1.56.0
68+
* @param condition A function evaluating which instruments to remove
69+
* based on their attributes.
70+
* @since TODO
6971
*/
70-
default void finish(Attributes attributes) {
71-
finish(attributes, Context.current());
72+
default void finish(Function<Attributes, Boolean> condition) {
73+
finish(condition, Context.current());
7274
}
7375

7476
/**
75-
* Finish the instrument record.
77+
* Finish the recording of the instrument.
7678
*
77-
* @param attributes A set of attributes to identify the instrument.
79+
* @param condition A function evaluating which instruments to remove
80+
* based on their attributes.
7881
* @param context The explicit context to associate with this measurement.
79-
* @since 1.56.0
82+
* @since TODO
8083
*/
81-
default void finish(Attributes attributes, Context context) {}
84+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
8285
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongGauge.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* A gauge instrument that synchronously records {@code long} values.
@@ -56,21 +57,23 @@ default boolean isEnabled() {
5657
void set(long value, Attributes attributes, Context context);
5758

5859
/**
59-
* Finish the instrument record.
60+
* Finish the recording of the instrument.
6061
*
61-
* @param attributes A set of attributes to identify the instrument.
62-
* @since 1.56.0
62+
* @param condition A function evaluating which instruments to remove
63+
* based on their attributes.
64+
* @since TODO
6365
*/
64-
default void finish(Attributes attributes) {
65-
finish(attributes, Context.current());
66+
default void finish(Function<Attributes, Boolean> condition) {
67+
finish(condition, Context.current());
6668
}
6769

6870
/**
69-
* Finish the instrument record.
71+
* Finish the recording of the instrument.
7072
*
71-
* @param attributes A set of attributes to identify the instrument.
73+
* @param condition A function evaluating which instruments to remove
74+
* based on their attributes.
7275
* @param context The explicit context to associate with this measurement.
73-
* @since 1.56.0
76+
* @since TODO
7477
*/
75-
default void finish(Attributes attributes, Context context) {}
78+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
7679
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongHistogram.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* A Histogram instrument that records {@code long} values.
@@ -62,21 +63,23 @@ default boolean isEnabled() {
6263
void record(long value, Attributes attributes, Context context);
6364

6465
/**
65-
* Finish the instrument record.
66+
* Finish the recording of the instrument.
6667
*
67-
* @param attributes A set of attributes to identify the instrument.
68-
* @since 1.56.0
68+
* @param condition A function evaluating which instruments to remove
69+
* based on their attributes.
70+
* @since TODO
6971
*/
70-
default void finish(Attributes attributes) {
71-
finish(attributes, Context.current());
72+
default void finish(Function<Attributes, Boolean> condition) {
73+
finish(condition, Context.current());
7274
}
7375

7476
/**
75-
* Finish the instrument record.
77+
* Finish the recording of the instrument.
7678
*
77-
* @param attributes A set of attributes to identify the instrument.
79+
* @param condition A function evaluating which instruments to remove
80+
* based on their attributes.
7881
* @param context The explicit context to associate with this measurement.
79-
* @since 1.56.0
82+
* @since TODO
8083
*/
81-
default void finish(Attributes attributes, Context context) {}
84+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
8285
}

api/all/src/main/java/io/opentelemetry/api/metrics/LongUpDownCounter.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.opentelemetry.api.common.Attributes;
99
import io.opentelemetry.context.Context;
1010
import javax.annotation.concurrent.ThreadSafe;
11+
import java.util.function.Function;
1112

1213
/**
1314
* An UpDownCounter instrument that records {@code long} values.
@@ -62,21 +63,23 @@ default boolean isEnabled() {
6263
void add(long value, Attributes attributes, Context context);
6364

6465
/**
65-
* Finish the instrument record.
66+
* Finish the recording of the instrument.
6667
*
67-
* @param attributes A set of attributes to identify the instrument.
68-
* @since 1.56.0
68+
* @param condition A function evaluating which instruments to remove
69+
* based on their attributes.
70+
* @since TODO
6971
*/
70-
default void finish(Attributes attributes) {
71-
finish(attributes, Context.current());
72+
default void finish(Function<Attributes, Boolean> condition) {
73+
finish(condition, Context.current());
7274
}
7375

7476
/**
75-
* Finish the instrument record.
77+
* Finish the recording of the instrument.
7678
*
77-
* @param attributes A set of attributes to identify the instrument.
79+
* @param condition A function evaluating which instruments to remove
80+
* based on their attributes.
7881
* @param context The explicit context to associate with this measurement.
79-
* @since 1.56.0
82+
* @since TODO
8083
*/
81-
default void finish(Attributes attributes, Context context) {}
84+
default void finish(Function<Attributes, Boolean> condition, Context context) {}
8285
}
Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,33 @@
11
Comparing source compatibility of opentelemetry-api-1.62.0-SNAPSHOT.jar against opentelemetry-api-1.61.0.jar
2-
No changes.
2+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.DoubleCounter (not serializable)
3+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
5+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
6+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.DoubleGauge (not serializable)
7+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
8+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
9+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
10+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.DoubleHistogram (not serializable)
11+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
12+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
13+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
14+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.DoubleUpDownCounter (not serializable)
15+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
16+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
17+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
18+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.LongCounter (not serializable)
19+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
20+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
21+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
22+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.LongGauge (not serializable)
23+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
24+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
25+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
26+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.LongHistogram (not serializable)
27+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
28+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
29+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)
30+
*** MODIFIED INTERFACE: PUBLIC ABSTRACT io.opentelemetry.api.metrics.LongUpDownCounter (not serializable)
31+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
32+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>)
33+
+++ NEW METHOD: PUBLIC(+) void finish(java.util.function.Function<io.opentelemetry.api.common.Attributes,java.lang.Boolean>, io.opentelemetry.context.Context)

sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/SdkDoubleCounter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
1717
import io.opentelemetry.sdk.metrics.internal.state.WriteableMetricStorage;
1818
import java.util.function.Consumer;
19+
import java.util.function.Function;
1920
import java.util.logging.Level;
2021
import java.util.logging.Logger;
2122

@@ -62,8 +63,8 @@ public void add(double increment) {
6263
}
6364

6465
@Override
65-
public void finish(Attributes attributes, Context context) {
66-
storage.remove(attributes, context);
66+
public void finish(Function<Attributes,Boolean> condition, Context context) {
67+
storage.finish(condition, context);
6768
}
6869

6970
static class SdkDoubleCounterBuilder implements DoubleCounterBuilder {

0 commit comments

Comments
 (0)