Skip to content

Commit 3226496

Browse files
breedx-splklaurit
andauthored
Add support for configuring opamp polling duration (#2675)
* add support for configuring opamp polling duration * spotless * remove enableRemoteConfig() * spotless * Apply suggestion from @laurit whoopsie Co-authored-by: Lauri Tulmin <tulmin@gmail.com> --------- Co-authored-by: Lauri Tulmin <tulmin@gmail.com>
1 parent 19c2048 commit 3226496

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

custom/src/main/java/com/splunk/opentelemetry/opamp/OpampActivator.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package com.splunk.opentelemetry.opamp;
1818

19+
import static io.opentelemetry.opamp.client.internal.request.service.HttpRequestService.DEFAULT_DELAY_BETWEEN_REQUESTS;
20+
import static io.opentelemetry.opamp.client.internal.request.service.HttpRequestService.DEFAULT_DELAY_BETWEEN_RETRIES;
1921
import static io.opentelemetry.sdk.autoconfigure.AutoConfigureUtil.getConfig;
2022
import static io.opentelemetry.sdk.autoconfigure.AutoConfigureUtil.getResource;
2123
import static io.opentelemetry.semconv.ServiceAttributes.SERVICE_INSTANCE_ID;
@@ -34,11 +36,13 @@
3436
import io.opentelemetry.opamp.client.OpampClient;
3537
import io.opentelemetry.opamp.client.OpampClientBuilder;
3638
import io.opentelemetry.opamp.client.internal.connectivity.http.OkHttpSender;
39+
import io.opentelemetry.opamp.client.internal.request.delay.PeriodicDelay;
3740
import io.opentelemetry.opamp.client.internal.request.service.HttpRequestService;
3841
import io.opentelemetry.opamp.client.internal.response.MessageData;
3942
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
4043
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
4144
import io.opentelemetry.sdk.resources.Resource;
45+
import java.time.Duration;
4246
import java.util.logging.Logger;
4347
import opamp.proto.ServerErrorResponse;
4448
import org.jetbrains.annotations.Nullable;
@@ -49,6 +53,7 @@ public class OpampActivator implements AgentListener {
4953

5054
private static final String OP_AMP_ENABLED_PROPERTY = "splunk.opamp.enabled";
5155
private static final String OP_AMP_ENDPOINT = "splunk.opamp.endpoint";
56+
private static final String OP_AMP_POLLING_INTERVAL = "splunk.opamp.polling.interval";
5257

5358
@Override
5459
public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk) {
@@ -58,11 +63,15 @@ public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetr
5863
}
5964

6065
Resource resource = getResource(autoConfiguredOpenTelemetrySdk);
66+
long pollingDuration =
67+
config.getLong(
68+
OP_AMP_POLLING_INTERVAL, DEFAULT_DELAY_BETWEEN_REQUESTS.getNextDelay().toMillis());
6169

6270
String endpoint = config.getString(OP_AMP_ENDPOINT);
6371
startOpampClient(
6472
endpoint,
6573
resource,
74+
pollingDuration,
6675
new OpampClient.Callbacks() {
6776
@Override
6877
public void onConnect(OpampClient opampClient) {}
@@ -84,12 +93,21 @@ public void onMessage(OpampClient opampClient, MessageData messageData) {}
8493
}
8594

8695
static OpampClient startOpampClient(
87-
String endpoint, Resource resource, OpampClient.Callbacks callbacks) {
96+
String endpoint,
97+
Resource resource,
98+
long pollingDurationMillis,
99+
OpampClient.Callbacks callbacks) {
88100

89101
OpampClientBuilder builder = OpampClient.builder();
90-
builder.enableRemoteConfig();
102+
// TODO: Uncomment once we are able to report our effective config
103+
// builder.enableEffectiveConfigReporting();
91104
if (endpoint != null) {
92-
builder.setRequestService(HttpRequestService.create(OkHttpSender.create(endpoint)));
105+
PeriodicDelay pollingDelay =
106+
PeriodicDelay.ofFixedDuration(Duration.ofMillis(pollingDurationMillis));
107+
OkHttpSender okhttp = OkHttpSender.create(endpoint);
108+
HttpRequestService httpSender =
109+
HttpRequestService.create(okhttp, pollingDelay, DEFAULT_DELAY_BETWEEN_RETRIES);
110+
builder.setRequestService(httpSender);
93111
}
94112
addIdentifying(builder, resource, DEPLOYMENT_ENVIRONMENT_NAME);
95113
addIdentifying(builder, resource, SERVICE_NAME);

custom/src/test/java/com/splunk/opentelemetry/opamp/OpampActivatorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ void testOpamp() throws Exception {
113113
OpampActivator.startOpampClient(
114114
server.httpUri().toString(),
115115
resource,
116+
500,
116117
new OpampClient.Callbacks() {
117118
@Override
118119
public void onConnect(OpampClient opampClient) {}

0 commit comments

Comments
 (0)