From 026015854753fd8749713faa25c667c83aed46aa Mon Sep 17 00:00:00 2001 From: Haokang Den Date: Mon, 15 Nov 2021 11:38:14 +0900 Subject: [PATCH 1/2] do not create a new emitter when a shared emitter is provided --- .../java/com/amazonaws/xray/AWSXRayRecorder.java | 16 ++++++++++++---- .../amazonaws/xray/AWSXRayRecorderBuilder.java | 6 +----- 2 files changed, 13 insertions(+), 9 deletions(-) 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..84a9f95b 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(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); } From 5f144a25e87d3d8ddd2bd389845e75bac0fc30b1 Mon Sep 17 00:00:00 2001 From: Haokang Den Date: Tue, 16 Nov 2021 13:36:35 +0900 Subject: [PATCH 2/2] add nullable type annotations --- .../src/main/java/com/amazonaws/xray/AWSXRayRecorder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 84a9f95b..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 @@ -141,7 +141,7 @@ public AWSXRayRecorder() { this(null); } - AWSXRayRecorder(Emitter sharedEmitter) { + AWSXRayRecorder(@Nullable Emitter sharedEmitter) { samplingStrategy = new DefaultSamplingStrategy(); streamingStrategy = new DefaultStreamingStrategy(); prioritizationStrategy = new DefaultPrioritizationStrategy();