diff --git a/custom/src/main/java/com/splunk/opentelemetry/opamp/OpampActivator.java b/custom/src/main/java/com/splunk/opentelemetry/opamp/OpampActivator.java index 527892087..bc673baed 100644 --- a/custom/src/main/java/com/splunk/opentelemetry/opamp/OpampActivator.java +++ b/custom/src/main/java/com/splunk/opentelemetry/opamp/OpampActivator.java @@ -33,6 +33,7 @@ import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.resources.Resource; +import java.io.IOException; import java.time.Duration; import java.util.List; import java.util.logging.Logger; @@ -60,28 +61,39 @@ public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetr OP_AMP_POLLING_INTERVAL, DEFAULT_DELAY_BETWEEN_REQUESTS.getNextDelay().toMillis()); String endpoint = config.getString(OP_AMP_ENDPOINT); - startOpampClient( - endpoint, - resource, - pollingDuration, - new OpampClient.Callbacks() { - @Override - public void onConnect(OpampClient opampClient) {} + OpampClient client = + startOpampClient( + endpoint, + resource, + pollingDuration, + new OpampClient.Callbacks() { + @Override + public void onConnect(OpampClient opampClient) {} - @Override - public void onConnectFailed(OpampClient opampClient, @Nullable Throwable throwable) { - logger.log(WARNING, "Connection to OpAMP server failed", throwable); - } + @Override + public void onConnectFailed(OpampClient opampClient, @Nullable Throwable throwable) { + logger.log(WARNING, "Connection to OpAMP server failed", throwable); + } - @Override - public void onErrorResponse( - OpampClient opampClient, ServerErrorResponse serverErrorResponse) { - logger.log(WARNING, "OpAMP server returned error " + serverErrorResponse); - } + @Override + public void onErrorResponse( + OpampClient opampClient, ServerErrorResponse serverErrorResponse) { + logger.log(WARNING, "OpAMP server returned error " + serverErrorResponse); + } - @Override - public void onMessage(OpampClient opampClient, MessageData messageData) {} - }); + @Override + public void onMessage(OpampClient opampClient, MessageData messageData) {} + }); + Runtime.getRuntime() + .addShutdownHook( + new Thread( + () -> { + try { + client.close(); + } catch (IOException e) { + logger.log(WARNING, "Error shutting down OpAMP client", e); + } + })); } static OpampClient startOpampClient(