diff --git a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorder.java b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorder.java index 5a8fd912..ec863924 100644 --- a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorder.java +++ b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorder.java @@ -138,6 +138,10 @@ public class AWSXRayRecorder { private boolean forcedTraceIdGeneration; public AWSXRayRecorder() { + this(null); + } + + AWSXRayRecorder(@Nullable Emitter sharedEmitter) { samplingStrategy = new DefaultSamplingStrategy(); streamingStrategy = new DefaultStreamingStrategy(); prioritizationStrategy = new DefaultPrioritizationStrategy(); @@ -175,10 +179,14 @@ public AWSXRayRecorder() { serviceRuntimeContext = new ConcurrentHashMap<>(); serviceRuntimeContext.putAll(RUNTIME_INFORMATION); - try { - emitter = Emitter.create(); - } catch (IOException e) { - throw new RuntimeException("Unable to instantiate AWSXRayRecorder: ", e); + if (sharedEmitter != null) { + emitter = sharedEmitter; + } else { + try { + emitter = Emitter.create(); + } catch (IOException e) { + throw new RuntimeException("Unable to instantiate AWSXRayRecorder: ", e); + } } } diff --git a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorderBuilder.java b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorderBuilder.java index 9c431ae7..58507823 100644 --- a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorderBuilder.java +++ b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/AWSXRayRecorderBuilder.java @@ -267,7 +267,7 @@ public AWSXRayRecorderBuilder withForcedTraceIdGeneration() { * @return a configured instance of AWSXRayRecorder */ public AWSXRayRecorder build() { - AWSXRayRecorder client = new AWSXRayRecorder(); + AWSXRayRecorder client = new AWSXRayRecorder(emitter); if (samplingStrategy != null) { client.setSamplingStrategy(samplingStrategy); @@ -291,10 +291,6 @@ public AWSXRayRecorder build() { client.setSegmentContextResolverChain(segmentContextResolverChain); } - if (emitter != null) { - client.setEmitter(emitter); - } - if (!segmentListeners.isEmpty()) { client.addAllSegmentListeners(segmentListeners); }