File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed
main/java/datadog/trace/core
test/groovy/datadog/trace/core Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change 1313import static datadog .trace .common .metrics .MetricsAggregatorFactory .createMetricsAggregator ;
1414import static datadog .trace .util .AgentThreadFactory .AGENT_THREAD_GROUP ;
1515import static datadog .trace .util .CollectionUtils .tryMakeImmutableMap ;
16+ import static java .util .Collections .emptyList ;
1617import static java .util .concurrent .TimeUnit .MILLISECONDS ;
1718import static java .util .concurrent .TimeUnit .MINUTES ;
1819import static java .util .concurrent .TimeUnit .NANOSECONDS ;
@@ -1183,7 +1184,11 @@ private List<DDSpan> interceptCompleteTrace(List<DDSpan> trace) {
11831184 String interceptorName = interceptor .getClass ().getName ();
11841185 rlLog .warn ("Throwable raised in TraceInterceptor {}" , interceptorName , e );
11851186 }
1187+ if (interceptedTrace == null ) {
1188+ interceptedTrace = emptyList ();
1189+ }
11861190 }
1191+
11871192 trace = new ArrayList <>(interceptedTrace .size ());
11881193 for (final MutableSpan span : interceptedTrace ) {
11891194 if (span instanceof DDSpan ) {
Original file line number Diff line number Diff line change @@ -171,6 +171,29 @@ class TraceInterceptorTest extends DDCoreSpecification {
171171 tags.size() >= 7
172172 }
173173
174+ def " should be robust when interceptor return a null trace" () {
175+ setup:
176+ tracer.interceptors.add(new TraceInterceptor() {
177+ @Override
178+ Collection<? extends MutableSpan> onTraceComplete(Collection<? extends MutableSpan> trace) {
179+ null
180+ }
181+
182+ @Override
183+ int priority() {
184+ return 0
185+ }
186+ })
187+
188+ when:
189+ DDSpan span = (DDSpan) tracer.startSpan(" test" , " test" )
190+ span.phasedFinish()
191+ tracer.write([span])
192+
193+ then:
194+ notThrown(Throwable)
195+ }
196+
174197 def " register interceptor through bridge" () {
175198 setup:
176199 GlobalTracer.registerIfAbsent(tracer)
You can’t perform that action at this time.
0 commit comments