Merge pull request #74 from DataDog/tyler/random

Use a ThreadLocalRandom generator for span IDs instead of nanoTime
This commit is contained in:
Tyler Benson 2017-07-31 12:06:35 -07:00 committed by GitHub
commit f56418e82a
3 changed files with 17 additions and 11 deletions

12
.gitignore vendored
View File

@ -1,6 +1,9 @@
# Maven #
#########
target
/target
**/target/
**/dependency-reduced-pom.xml
# Gradle #
#########
@ -31,6 +34,8 @@ Thumbs.db
#################
/.idea
*.iml
*.ipr
*.iws
# Visual Studio Code #
######################
@ -39,10 +44,5 @@ Thumbs.db
# Others #
##########
/logs/*
/target
**/target/
**/dependency-reduced-pom.xml
/bin
/out

View File

@ -45,7 +45,7 @@ public class TraceAnnotationsManagerTest {
//Test new trace with 2 children spans
SayTracedHello.sayHELLOsayHA();
assertThat(writer.firstTrace().size()).isEqualTo(3);
final long parentId = writer.firstTrace().get(0).context().getTraceId();
final long parentId = writer.firstTrace().get(0).context().getSpanId();
assertThat(writer.firstTrace().get(0).getOperationName()).isEqualTo("NEW_TRACE");
assertThat(writer.firstTrace().get(0).getParentId()).isEqualTo(0); //ROOT / no parent

View File

@ -5,7 +5,6 @@ import com.datadoghq.trace.propagation.Codec;
import com.datadoghq.trace.propagation.HTTPCodec;
import com.datadoghq.trace.sampling.AllSampler;
import com.datadoghq.trace.sampling.Sampler;
import com.datadoghq.trace.util.Clock;
import com.datadoghq.trace.writer.LoggingWriter;
import com.datadoghq.trace.writer.Writer;
import io.opentracing.ActiveSpan;
@ -14,7 +13,13 @@ import io.opentracing.BaseSpan;
import io.opentracing.SpanContext;
import io.opentracing.propagation.Format;
import io.opentracing.util.ThreadLocalActiveSpanSource;
import java.util.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ThreadLocalRandom;
import lombok.extern.slf4j.Slf4j;
/** DDTracer makes it easy to send traces and span to DD using the OpenTracing integration. */
@ -285,7 +290,8 @@ public class DDTracer extends ThreadLocalActiveSpanSource implements io.opentrac
}
private long generateNewId() {
return Clock.currentNanoTicks();
// Ensure the generated ID is in a valid range:
return ThreadLocalRandom.current().nextLong(1, Long.MAX_VALUE);
}
/**
@ -319,7 +325,7 @@ public class DDTracer extends ThreadLocalActiveSpanSource implements io.opentrac
if (this.serviceName == null) this.serviceName = ddsc.getServiceName();
if (this.spanType == null) this.spanType = ddsc.getSpanType();
} else {
traceId = spanId;
traceId = generateNewId();
parentSpanId = 0L;
baggage = null;
parentTrace = null;