diff --git a/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/TraceManagerProducer.java b/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/TraceManagerProducer.java index 354d75371f..6b35144178 100644 --- a/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/TraceManagerProducer.java +++ b/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/TraceManagerProducer.java @@ -56,8 +56,23 @@ public class TraceManagerProducer @PostConstruct public void init() { - logger.info( "Initializing Opentelemetry trace plugin" ); - O11yphantTracePlugin plugin = new OtelTracePlugin( config, config ); + logger.info( "Initializing OpenTelemetry trace plugin" ); + O11yphantTracePlugin plugin; + + try + { + plugin = new OtelTracePlugin( config, config ); + } + catch ( Exception | Error e ) + { + logger.warn( "Failed to initialize OpenTelemetry trace plugin. " + + "This is likely due to OpenTelemetry collector being unavailable or a library version mismatch. " + + "Tracing will be disabled. Error: {}", e.getMessage(), e ); + + // Disable tracing and recreate plugin in disabled mode + config.setEnabled( false ); + plugin = new OtelTracePlugin( config, config ); + } traceManager = new TraceManager( plugin, new SpanFieldsDecorator( getRootSpanFields() ), config ); traceThreadContextualizer = traceManager.getTraceThreadContextualizer(); diff --git a/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/config/IndyTraceConfiguration.java b/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/config/IndyTraceConfiguration.java index 8083b1f609..621c481b0d 100644 --- a/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/config/IndyTraceConfiguration.java +++ b/subsys/trace/src/main/java/org/commonjava/indy/subsys/trace/config/IndyTraceConfiguration.java @@ -108,6 +108,11 @@ public boolean isEnabled() return enabled; } + public void setEnabled( boolean enabled ) + { + this.enabled = enabled; + } + @Override public boolean isConsoleTransport() {