diff --git a/src/main/java/com/profiler/context/SpanID.java b/src/main/java/com/profiler/context/SpanID.java index 3149af886..5141745b9 100644 --- a/src/main/java/com/profiler/context/SpanID.java +++ b/src/main/java/com/profiler/context/SpanID.java @@ -6,7 +6,7 @@ public class SpanID { public static final int NULL = -1; - private static Random seed = new Random(); + private static final Random seed = new Random(); public static int newSpanID() { int id = seed.nextInt(); @@ -16,9 +16,9 @@ public class SpanID { return id; } - public static int nextSpanID(long parentId) { + public static int nextSpanID(int spanId, int parentSpanId) { int newId = newSpanID(); - while (newId == parentId) { + while (newId == spanId || newId == parentSpanId) { newId = newSpanID(); } return newId; diff --git a/src/main/java/com/profiler/context/TraceID.java b/src/main/java/com/profiler/context/TraceID.java index 70a986e62..1d899ffbb 100644 --- a/src/main/java/com/profiler/context/TraceID.java +++ b/src/main/java/com/profiler/context/TraceID.java @@ -15,7 +15,7 @@ public class TraceID { } public TraceID getNextTraceId() { - return new TraceID(id, spanId, SpanID.nextSpanID(spanId), sampled, flags); + return new TraceID(id, spanId, SpanID.nextSpanID(spanId, parentSpanId), sampled, flags); } public TraceID(UUID id, int parentSpanId, int spanId, boolean sampled, short flags) {