Skip to content

Commit ffc0c73

Browse files
Merge pull request #2302 from newrelic/DT_Debugging
Updates to account for the no tracestate use case
2 parents b150a5f + af94674 commit ffc0c73

File tree

6 files changed

+29
-30
lines changed

6 files changed

+29
-30
lines changed

newrelic-agent/src/main/java/com/newrelic/agent/HeadersUtil.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -261,10 +261,11 @@ public static void parseAndAcceptDistributedTraceHeaders(Transaction tx, Inbound
261261
W3CTracePayload w3CTracePayload = W3CTracePayload.parseHeaders(tx, traceParent, traceState);
262262
if (w3CTracePayload != null) {
263263
if (w3CTracePayload.getPayload() != null) {
264-
tx.acceptDistributedTracePayload(w3CTracePayload.getPayload(), w3CTracePayload.getTraceParent());
264+
tx.acceptDistributedTracePayload(w3CTracePayload.getPayload());
265265
}
266266
if (w3CTracePayload.getTraceParent() != null) {
267267
tx.getSpanProxy().setInitiatingW3CTraceParent(w3CTracePayload.getTraceParent());
268+
tx.applyDistributedTracingSamplerConfig(w3CTracePayload.getTraceParent());
268269
}
269270
if (w3CTracePayload.getTraceState() != null) {
270271
tx.getSpanProxy().setInitiatingW3CTraceState(w3CTracePayload.getTraceState());

newrelic-agent/src/main/java/com/newrelic/agent/Transaction.java

+22-24
Original file line numberDiff line numberDiff line change
@@ -315,37 +315,16 @@ public boolean acceptDistributedTracePayload(String payload) {
315315
}
316316
}
317317

318-
public boolean acceptDistributedTracePayload(DistributedTracePayload payload, W3CTraceParent parent) {
319-
DistributedTracingConfig dtConfig = getAgentConfig().getDistributedTracingConfig();
320-
if (dtConfig.isEnabled()) {
318+
public boolean acceptDistributedTracePayload(DistributedTracePayload payload) {
319+
if (getAgentConfig().getDistributedTracingConfig().isEnabled()) {
321320
long elapsedMillis = TimeUnit.NANOSECONDS.toMillis(
322321
System.nanoTime() - this.getTransactionTimer().getStartTimeInNanos());
323322
long txnStartTimeSinceEpochInMillis = System.currentTimeMillis() - elapsedMillis;
324323
spanProxy.get().setTimestamp(txnStartTimeSinceEpochInMillis);
325324
boolean accepted = spanProxy.get().acceptDistributedTracePayload(payload);
326325
if (accepted) {
327326
this.transportDurationInMillis = spanProxy.get().getTransportDurationInMillis();
328-
if (parent != null) {
329-
if (parent.sampled()) { // traceparent exists and sampled is 1
330-
if (DistributedTracingConfig.SAMPLE_ALWAYS_ON.equals(dtConfig.getRemoteParentSampled())) {
331-
this.setPriorityIfNotNull(2.0f);
332-
} else if (DistributedTracingConfig.SAMPLE_ALWAYS_OFF.equals(dtConfig.getRemoteParentSampled())) {
333-
this.setPriorityIfNotNull(0.0f);
334-
} else {
335-
this.setPriorityIfNotNull(spanProxy.get().getInboundDistributedTracePayload().priority);
336-
}
337-
} else { // traceparent exists and sampled is 0
338-
if (DistributedTracingConfig.SAMPLE_ALWAYS_ON.equals(dtConfig.getRemoteParentNotSampled())) {
339-
this.setPriorityIfNotNull(2.0f);
340-
} else if (DistributedTracingConfig.SAMPLE_ALWAYS_OFF.equals(dtConfig.getRemoteParentNotSampled())) {
341-
this.setPriorityIfNotNull(0.0f);
342-
} else {
343-
this.setPriorityIfNotNull(spanProxy.get().getInboundDistributedTracePayload().priority);
344-
}
345-
}
346-
} else {
347-
this.setPriorityIfNotNull(spanProxy.get().getInboundDistributedTracePayload().priority);
348-
}
327+
this.setPriorityIfNotNull(spanProxy.get().getInboundDistributedTracePayload().priority);
349328
}
350329
return accepted;
351330
} else {
@@ -354,6 +333,25 @@ public boolean acceptDistributedTracePayload(DistributedTracePayload payload, W3
354333
}
355334
}
356335

336+
public void applyDistributedTracingSamplerConfig(W3CTraceParent parent) {
337+
if (parent != null) {
338+
DistributedTracingConfig dtConfig = getAgentConfig().getDistributedTracingConfig();
339+
if (parent.sampled()) { // traceparent exists and sampled is 1
340+
if (DistributedTracingConfig.SAMPLE_ALWAYS_ON.equals(dtConfig.getRemoteParentSampled())) {
341+
this.setPriorityIfNotNull(2.0f);
342+
} else if (DistributedTracingConfig.SAMPLE_ALWAYS_OFF.equals(dtConfig.getRemoteParentSampled())) {
343+
this.setPriorityIfNotNull(0.0f);
344+
} // else leave it as it was
345+
} else { // traceparent exists and sampled is 0
346+
if (DistributedTracingConfig.SAMPLE_ALWAYS_ON.equals(dtConfig.getRemoteParentNotSampled())) {
347+
this.setPriorityIfNotNull(2.0f);
348+
} else if (DistributedTracingConfig.SAMPLE_ALWAYS_OFF.equals(dtConfig.getRemoteParentNotSampled())) {
349+
this.setPriorityIfNotNull(0.0f);
350+
} // else leave it as it was
351+
}
352+
}
353+
}
354+
357355
private void checkAndSetPriority() {
358356
if (getAgentConfig().getDistributedTracingConfig().isEnabled()) {
359357
DistributedTraceService distributedTraceService = ServiceFactory.getDistributedTraceService();

newrelic-agent/src/main/java/com/newrelic/agent/TransactionApiImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ public void acceptDistributedTracePayload(String payload) {
509509
public void acceptDistributedTracePayload(DistributedTracePayload payload) {
510510
Transaction tx = getTransactionIfExists();
511511
if (tx != null) {
512-
tx.acceptDistributedTracePayload(payload, null);
512+
tx.acceptDistributedTracePayload(payload);
513513
}
514514
}
515515

newrelic-agent/src/test/java/com/newrelic/agent/tracers/DefaultTracerClmTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,7 @@ public void testTransactionABParenting() {
888888
DefaultTracer span5Tracer = new OtherRootTracer(txB, new ClassMethodSignature("class",
889889
"span5", "()V"), null, DefaultTracer.NULL_METRIC_NAME_FORMATTER);
890890
txB.getTransactionActivity().tracerStarted(span5Tracer);
891-
span5Tracer.getTransaction().acceptDistributedTracePayload(payload, null);
891+
span5Tracer.getTransaction().acceptDistributedTracePayload(payload);
892892

893893
txB.setTransactionName(com.newrelic.api.agent.TransactionNamePriority.CUSTOM_HIGH, true, "Transaction B");
894894
txB.setThrowable(new Throwable(), TransactionErrorPriority.API, false);

newrelic-agent/src/test/java/com/newrelic/agent/tracers/DefaultTracerTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -924,7 +924,7 @@ public void testTransactionABParenting() {
924924
DefaultTracer span5Tracer = new OtherRootTracer(txB, new ClassMethodSignature("class",
925925
"span5", "()V"), null, DefaultTracer.NULL_METRIC_NAME_FORMATTER);
926926
txB.getTransactionActivity().tracerStarted(span5Tracer);
927-
span5Tracer.getTransaction().acceptDistributedTracePayload(payload, null);
927+
span5Tracer.getTransaction().acceptDistributedTracePayload(payload);
928928

929929
txB.setTransactionName(com.newrelic.api.agent.TransactionNamePriority.CUSTOM_HIGH, true, "Transaction B");
930930
txB.setThrowable(new Throwable(), TransactionErrorPriority.API, false);

newrelic-agent/src/test/java/com/newrelic/agent/tracing/W3CTraceStateSupportTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public void testParseHeadersNoPriorityOrSampledTriggersResamplingDecision() {
120120
Collections.singletonList("02-12341234123412341234123412341234-4321432143214321-01"),
121121
Arrays.asList("190@nr=0-0-709288-8599547-f85f42fd82a4cf1d-164d3b4b0d09cb05164d3b4b0d09cb05---1563574856827")).getPayload();
122122
assertNotNull(inboundPayload);
123-
transaction.acceptDistributedTracePayload(inboundPayload, null);
123+
transaction.acceptDistributedTracePayload(inboundPayload);
124124

125125
transaction.createDistributedTracePayload("meatball!");
126126
String[] outboundPayload = new W3CTraceStateHeader(true, true).create(transaction.getSpanProxy()).split("-");
@@ -159,7 +159,7 @@ public void testParseHeadersDup() {
159159
Arrays.asList("190@nr=0-0-709288-8599547-f85f42fd82a4cf1d-164d3b4b0d09cb05164d3b4b0d09cb05-1-0.789-1563574856827", "congo@=0-qzx932-abc123",
160160
"congo@=0-very-qzx932-abc123")).getPayload();
161161
assertNotNull(inboundPayload);
162-
transaction.acceptDistributedTracePayload(inboundPayload, null);
162+
transaction.acceptDistributedTracePayload(inboundPayload);
163163

164164
String newSpanId = TransactionGuidFactory.generate16CharGuid();
165165
transaction.createDistributedTracePayload(newSpanId);

0 commit comments

Comments
 (0)