Skip to content

Commit

Permalink
fix flushing
Browse files Browse the repository at this point in the history
  • Loading branch information
trask committed Jan 11, 2024
1 parent e7ddac7 commit 9d72f64
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 43 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,11 @@
import com.microsoft.applicationinsights.agent.internal.telemetry.TelemetryObservers;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
import io.opentelemetry.sdk.autoconfigure.spi.internal.AutoConfigureListener;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
Expand All @@ -75,12 +77,14 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.annotation.Nullable;

@AutoService(AutoConfigurationCustomizerProvider.class)
public class SecondEntryPoint implements AutoConfigurationCustomizerProvider {
public class SecondEntryPoint
implements AutoConfigurationCustomizerProvider, AutoConfigureListener {

private static final ClientLogger startupLogger =
new ClientLogger("com.microsoft.applicationinsights.agent");
Expand Down Expand Up @@ -708,6 +712,36 @@ private static SdkMeterProviderBuilder configureMetrics(
return builder;
}

@Override
public void afterAutoConfigure(OpenTelemetrySdk sdk) {
Runtime.getRuntime()
.addShutdownHook(
new Thread(
() -> flushAll(sdk, TelemetryClient.getActive()).join(10, TimeUnit.SECONDS)));
}

private static CompletableResultCode flushAll(
OpenTelemetrySdk sdk, TelemetryClient telemetryClient) {
System.out.println("FLUSHING ON SHUTDOWN");
CompletableResultCode sdkShutdownResult = sdk.shutdown();
CompletableResultCode overallResult = new CompletableResultCode();
sdkShutdownResult.whenComplete(
() -> {
// IMPORTANT: the metric reader flush will fail if the periodic metric reader is already
// mid-exporter
CompletableResultCode telemetryClientResult = telemetryClient.forceFlush();
telemetryClientResult.whenComplete(
() -> {
if (sdkShutdownResult.isSuccess() && telemetryClientResult.isSuccess()) {
overallResult.succeed();
} else {
overallResult.fail();
}
});
});
return overallResult;
}

private static class BackCompatHttpUrlProcessor implements SpanExporter {

private final SpanExporter delegate;
Expand Down

This file was deleted.

0 comments on commit 9d72f64

Please sign in to comment.