sumitagrawl commented on code in PR #10477:
URL: https://github.com/apache/ozone/pull/10477#discussion_r3628152218
##########
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/tracing/TracingUtil.java:
##########
@@ -129,23 +141,107 @@ public static <R, E extends Exception> R execute(
}
}
- private static void shutdownTracing() {
- if (sdkTracerProvider == null) {
- return;
- }
+ static void shutdownTracing() {
try {
- sdkTracerProvider.shutdown().join(10L, TimeUnit.SECONDS);
+ if (sdkTracerProvider != null) {
+ sdkTracerProvider.shutdown().join(10L, TimeUnit.SECONDS);
+ }
} catch (Exception e) {
LOG.warn("Tracing shutdown failed", e);
} finally {
sdkTracerProvider = null;
batchSpanProcessor = null;
tracer = OpenTelemetry.noop().getTracer("noop");
+ tracingEnabled = false;
+ applicationAware = false;
isInit = false;
}
}
- private static void initialize(String serviceName, TracingConfig
tracingConfig) {
+ private static void initialize(String serviceName, TracingConfig cfg,
boolean isReconfig) {
+ tracingEnabled = cfg.isTracingEnabled();
+ applicationAware = cfg.isApplicationAware();
+
+ if (!tracingEnabled && !applicationAware) {
+ tracer = OpenTelemetry.noop().getTracer(GLOBAL_TRACER_NAME);
+ return;
+ }
+
+ // Server reconfiguration reprioritizes Ozone's SDK over any adopted
global,
+ // and re-registers the global name and tracer.
+ if (isReconfig && tracingEnabled) {
+ initOzoneSdk(serviceName, cfg, true);
+ return;
+ }
+
+ // Global first: adopt an application-registered GlobalOpenTelemetry when
present.
+ if (GlobalOpenTelemetry.isSet() &&
isRealGlobal(GlobalOpenTelemetry.get())) {
+ tracer = GlobalOpenTelemetry.get().getTracer(GLOBAL_TRACER_NAME);
+ LOG.info("Tracing: adopted application GlobalOpenTelemetry");
+ return;
+ }
+
+ // No app-supplied global — build Ozone's SDK and always register it as
the JVM global,
+ // so any co-resident library observes the same tracer whenever tracing is
valid.
+ initOzoneSdk(serviceName, cfg, true);
+ }
+
+ private static void initOzoneSdk(String serviceName, TracingConfig cfg,
boolean registerGlobal) {
+ SdkTracerProvider tracerProvider = buildSdkTracerProvider(serviceName,
cfg);
+ try {
+ OpenTelemetrySdk sdk;
+ if (registerGlobal) {
+ sdk = OpenTelemetrySdk.builder()
+ .setTracerProvider(tracerProvider)
+
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
+ .build();
+ // GlobalOpenTelemetry.set is one-shot
+ GlobalOpenTelemetry.resetForTest();
Review Comment:
move this to test file, may be setup
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]