diff --git a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java index 9a6a1f599bf..5377d092d39 100644 --- a/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java +++ b/sdk-extensions/declarative-config/src/test/java/io/opentelemetry/sdk/autoconfigure/declarativeconfig/SamplerFactoryTest.java @@ -235,4 +235,45 @@ void create_SpiExporter_Valid() { assertThat(((SamplerComponentProvider.TestSampler) sampler).config.getString("key1")) .isEqualTo("value1"); } + + @Test + void create_JaegerRemote_interval() { + Sampler sampler = + SamplerFactory.getInstance() + .create( + new SamplerModel() + .withJaegerRemoteDevelopment( + new ExperimentalJaegerRemoteSamplerModel() + .withEndpoint("http://jaeger-remote-endpoint") + .withInterval(10_000) + .withInitialSampler( + new SamplerModel().withAlwaysOff(new AlwaysOffSamplerModel()))), + context); + cleanup.addCloseable(sampler); + + assertThat(sampler) + .isInstanceOf(JaegerRemoteSampler.class) + .extracting("pollingIntervalMs") + .isEqualTo(10_000); + } + + @Test + void create_JaegerRemote_intervalDefault() { + Sampler sampler = + SamplerFactory.getInstance() + .create( + new SamplerModel() + .withJaegerRemoteDevelopment( + new ExperimentalJaegerRemoteSamplerModel() + .withEndpoint("http://jaeger-remote-endpoint") + .withInitialSampler( + new SamplerModel().withAlwaysOff(new AlwaysOffSamplerModel()))), + context); + cleanup.addCloseable(sampler); + + assertThat(sampler) + .isInstanceOf(JaegerRemoteSampler.class) + .extracting("pollingIntervalMs") + .isEqualTo(60_000); + } } diff --git a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java index 52a8b350e7c..57c7ce158d8 100644 --- a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java +++ b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/JaegerRemoteSampler.java @@ -37,6 +37,7 @@ public final class JaegerRemoteSampler implements Sampler { private static final String TYPE = "remoteSampling"; private final String serviceName; + private final int pollingIntervalMs; private final ScheduledExecutorService pollExecutor; private final ScheduledFuture pollFuture; @@ -52,6 +53,7 @@ public final class JaegerRemoteSampler implements Sampler { int pollingIntervalMs, Sampler initialSampler) { this.serviceName = serviceName != null ? serviceName : ""; + this.pollingIntervalMs = pollingIntervalMs; this.grpcSender = grpcSender; this.sampler = initialSampler; pollExecutor = Executors.newScheduledThreadPool(1, new DaemonThreadFactory(WORKER_THREAD_NAME)); @@ -174,6 +176,11 @@ Sampler getSampler() { return this.sampler; } + // Visible for testing + int getPollingIntervalMs() { + return this.pollingIntervalMs; + } + public static JaegerRemoteSamplerBuilder builder() { return new JaegerRemoteSamplerBuilder(); } diff --git a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java index b6dd93b77c1..b983f6751ef 100644 --- a/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java +++ b/sdk-extensions/jaeger-remote-sampler/src/main/java/io/opentelemetry/sdk/extension/trace/jaeger/sampler/internal/JaegerRemoteSamplerComponentProvider.java @@ -47,7 +47,7 @@ public Sampler create(DeclarativeConfigProperties config) { } builder.setInitialSampler(DeclarativeConfiguration.createSampler(initialSamplerModel)); - Long pollingIntervalMs = config.getLong("internal"); + Long pollingIntervalMs = config.getLong("interval"); if (pollingIntervalMs != null) { builder.setPollingInterval(Duration.ofMillis(pollingIntervalMs)); }