Skip to content

Commit 93457ac

Browse files
authored
[dynamic control] Add SourceKind to TelemetryPolicy (open-telemetry#2972)
1 parent bd125c8 commit 93457ac

3 files changed

Lines changed: 47 additions & 1 deletion

File tree

dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/policy/DeletedTelemetryPolicy.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,24 @@
55

66
package io.opentelemetry.contrib.dynamic.policy;
77

8+
import io.opentelemetry.contrib.dynamic.policy.source.SourceKind;
89
import java.util.Objects;
910

1011
public final class DeletedTelemetryPolicy implements TelemetryPolicy {
1112
private final TelemetryPolicyIdentity identity;
1213
private final String type;
14+
private final SourceKind sourceKind;
1315

16+
// TODO after "source" prioritization handling is complete, remove this constructor
1417
public DeletedTelemetryPolicy(TelemetryPolicyIdentity identity, String type) {
18+
this(identity, type, SourceKind.CUSTOM);
19+
}
20+
21+
public DeletedTelemetryPolicy(
22+
TelemetryPolicyIdentity identity, String type, SourceKind sourceKind) {
1523
this.identity = Objects.requireNonNull(identity, "identity cannot be null");
1624
this.type = Objects.requireNonNull(type, "type cannot be null");
25+
this.sourceKind = Objects.requireNonNull(sourceKind, "sourceKind cannot be null");
1726
}
1827

1928
@Override
@@ -26,13 +35,24 @@ public String getType() {
2635
return type;
2736
}
2837

38+
@Override
39+
public SourceKind getSourceKind() {
40+
return sourceKind;
41+
}
42+
2943
@Override
3044
public boolean isDeleted() {
3145
return true;
3246
}
3347

3448
@Override
3549
public String toString() {
36-
return "DeletedTelemetryPolicy{identity=" + identity + ", type='" + getType() + "'}";
50+
return "DeletedTelemetryPolicy{identity="
51+
+ identity
52+
+ ", type='"
53+
+ getType()
54+
+ "', sourceKind="
55+
+ sourceKind
56+
+ "}";
3757
}
3858
}

dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/policy/TelemetryPolicy.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package io.opentelemetry.contrib.dynamic.policy;
77

8+
import io.opentelemetry.contrib.dynamic.policy.source.SourceKind;
9+
810
/**
911
* Represents a single telemetry policy with spec-required identity and policy type.
1012
*
@@ -35,6 +37,17 @@ public interface TelemetryPolicy {
3537
*/
3638
String getType();
3739

40+
/**
41+
* Returns the provider source kind that supplied this policy.
42+
*
43+
* <p>The source is used to resolve duplicate policy IDs across providers. Lower-priority sources
44+
* are dropped when a higher-priority source supplies the same policy identity.
45+
*/
46+
// TODO after "source" prioritization handling is complete, make non-default
47+
default SourceKind getSourceKind() {
48+
return SourceKind.CUSTOM;
49+
}
50+
3851
/**
3952
* Returns whether this policy represents a deleted element.
4053
*

dynamic-control/src/main/java/io/opentelemetry/contrib/dynamic/policy/tracesampling/TraceSamplingRatePolicy.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.opentelemetry.contrib.dynamic.policy.TelemetryPolicy;
1010
import io.opentelemetry.contrib.dynamic.policy.TelemetryPolicyIdentity;
1111
import io.opentelemetry.contrib.dynamic.policy.registry.PolicyInit;
12+
import io.opentelemetry.contrib.dynamic.policy.source.SourceKind;
1213
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
1314
import io.opentelemetry.sdk.extension.incubator.trace.samplers.ComposableSampler;
1415
import io.opentelemetry.sdk.extension.incubator.trace.samplers.CompositeSampler;
@@ -25,10 +26,17 @@ public final class TraceSamplingRatePolicy implements TelemetryPolicy {
2526

2627
private final TelemetryPolicyIdentity identity;
2728
private final double probability;
29+
private final SourceKind sourceKind;
2830

31+
// TODO after "source" prioritization handling is complete, remove this constructor
2932
public TraceSamplingRatePolicy(double probability) {
33+
this(probability, SourceKind.CUSTOM);
34+
}
35+
36+
public TraceSamplingRatePolicy(double probability, SourceKind sourceKind) {
3037
this.identity = DEFAULT_IDENTITY;
3138
this.probability = normalizeProbability(probability);
39+
this.sourceKind = Objects.requireNonNull(sourceKind, "sourceKind cannot be null");
3240
}
3341

3442
@Override
@@ -41,6 +49,11 @@ public String getType() {
4149
return POLICY_TYPE;
4250
}
4351

52+
@Override
53+
public SourceKind getSourceKind() {
54+
return sourceKind;
55+
}
56+
4457
public double getProbability() {
4558
return probability;
4659
}

0 commit comments

Comments
 (0)