Skip to content

Commit 3cd680c

Browse files
authored
Update declaratvie config jaeger remote sampler to require endpoint, initial_sampler (#7943)
1 parent 7a46bc5 commit 3cd680c

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,29 @@ private static Stream<Arguments> createArguments() {
129129
.build()));
130130
}
131131

132+
@ParameterizedTest
133+
@MethodSource("createInvalidArguments")
134+
void createInvalid(SamplerModel model, String expectedMessage) {
135+
assertThatThrownBy(() -> SamplerFactory.getInstance().create(model, context))
136+
.isInstanceOf(DeclarativeConfigException.class)
137+
.cause()
138+
.hasMessage(expectedMessage);
139+
}
140+
141+
private static Stream<Arguments> createInvalidArguments() {
142+
return Stream.of(
143+
Arguments.of(
144+
new SamplerModel()
145+
.withJaegerRemoteDevelopment(new ExperimentalJaegerRemoteSamplerModel()),
146+
"jaeger remote sampler endpoint is required"),
147+
Arguments.of(
148+
new SamplerModel()
149+
.withJaegerRemoteDevelopment(
150+
new ExperimentalJaegerRemoteSamplerModel()
151+
.withEndpoint("http://jaeger-remote-endpoint")),
152+
"jaeger remote sampler initial_sampler is required"));
153+
}
154+
132155
@Test
133156
void create_SpiExporter_Unknown() {
134157
List<Closeable> closeables = new ArrayList<>();

sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java

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

66
package io.opentelemetry.sdk.extension.trace.jaeger.sampler.internal;
77

8+
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
89
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
910
import io.opentelemetry.sdk.autoconfigure.spi.internal.ComponentProvider;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
@@ -34,20 +35,22 @@ public String getName() {
3435
public Sampler create(DeclarativeConfigProperties config) {
3536
JaegerRemoteSamplerBuilder builder = JaegerRemoteSampler.builder();
3637

37-
// Optional configuration
3838
String endpoint = config.getString("endpoint");
39-
if (endpoint != null) {
40-
builder.setEndpoint(endpoint);
39+
if (endpoint == null) {
40+
throw new DeclarativeConfigException("jaeger remote sampler endpoint is required");
4141
}
42+
builder.setEndpoint(endpoint);
43+
44+
DeclarativeConfigProperties initialSamplerModel = config.getStructured("initial_sampler");
45+
if (initialSamplerModel == null) {
46+
throw new DeclarativeConfigException("jaeger remote sampler initial_sampler is required");
47+
}
48+
builder.setInitialSampler(DeclarativeConfiguration.createSampler(initialSamplerModel));
49+
4250
Long pollingIntervalMs = config.getLong("internal");
4351
if (pollingIntervalMs != null) {
4452
builder.setPollingInterval(Duration.ofMillis(pollingIntervalMs));
4553
}
46-
DeclarativeConfigProperties initialSamplerModel = config.getStructured("initial_sampler");
47-
if (initialSamplerModel != null) {
48-
Sampler initialSampler = DeclarativeConfiguration.createSampler(initialSamplerModel);
49-
builder.setInitialSampler(initialSampler);
50-
}
5154

5255
return builder.build();
5356
}

0 commit comments

Comments
 (0)