Force flush metrics as well when used. (#3543)

This commit is contained in:
Anuraag Agrawal 2021-07-13 02:21:04 +09:00 committed by GitHub
parent a1b1c7452e
commit f717f6a153
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 1 deletions

View File

@ -11,6 +11,9 @@ import io.opentelemetry.javaagent.extension.AgentListener;
import io.opentelemetry.javaagent.instrumentation.api.OpenTelemetrySdkAccess;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.OpenTelemetrySdkAutoConfiguration;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.metrics.export.IntervalMetricReader;
import java.util.Arrays;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -38,7 +41,12 @@ public class OpenTelemetryInstaller implements AgentListener {
OpenTelemetrySdk sdk = OpenTelemetrySdkAutoConfiguration.initialize();
OpenTelemetrySdkAccess.internalSetForceFlush(
(timeout, unit) -> sdk.getSdkTracerProvider().forceFlush().join(timeout, unit));
(timeout, unit) -> {
CompletableResultCode traceResult = sdk.getSdkTracerProvider().forceFlush();
CompletableResultCode flushResult = IntervalMetricReader.forceFlushGlobal();
CompletableResultCode.ofAll(Arrays.asList(traceResult, flushResult))
.join(timeout, unit);
});
} else {
logger.info("Tracing is disabled.");
}