Loading skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java +25 −7 Original line number Diff line number Diff line Loading @@ -87,12 +87,19 @@ public class TraceSegment implements ISerializable<SegmentMessage> { /** * Establish the link between this segment and its parents. * When {@param primaryOnly} is true; * The first time, you {@link #ref(TraceSegmentRef)} to parent, it is affirmed as {@link #primaryRef}. * And others are affirmed as {@link #refs}. * * @param refSegment {@link TraceSegmentRef} * @param primaryOnly if true, set {@param refSegment} to {@link #primaryRef} only. */ public void ref(TraceSegmentRef refSegment) { public void ref(TraceSegmentRef refSegment, boolean primaryOnly) { if(primaryOnly){ if (primaryRef == null) { primaryRef = refSegment; } }else { if (primaryRef == null) { primaryRef = refSegment; } else { Loading @@ -102,6 +109,17 @@ public class TraceSegment implements ISerializable<SegmentMessage> { refs.add(refSegment); } } } /** * Set to {@link #primaryRef} only, * based on {@link #ref(TraceSegmentRef, boolean)} * * @param refSegment {@link TraceSegmentRef} */ public void ref(TraceSegmentRef refSegment){ ref(refSegment, true); } /** * After {@link Span} is finished, as be controller by "skywalking-api" module, Loading skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java +6 −6 Original line number Diff line number Diff line Loading @@ -24,17 +24,17 @@ public class TraceSegmentTestCase { TraceSegmentRef ref1 = new TraceSegmentRef(); ref1.setTraceSegmentId("parent_trace_0"); ref1.setSpanId(1); segment.ref(ref1); segment.ref(ref1, false); TraceSegmentRef ref2 = new TraceSegmentRef(); ref2.setTraceSegmentId("parent_trace_1"); ref2.setSpanId(5); segment.ref(ref2); segment.ref(ref2, false); TraceSegmentRef ref3 = new TraceSegmentRef(); ref3.setTraceSegmentId("parent_trace_1"); ref3.setSpanId(5); segment.ref(ref3); segment.ref(ref3, false); Assert.assertEquals(ref1, segment.getPrimaryRef()); Assert.assertEquals(ref2, segment.getRefs().get(0)); Loading Loading @@ -75,21 +75,21 @@ public class TraceSegmentTestCase { ref1.setSpanId(1); ref1.setApplicationCode("REMOTE_APP"); ref1.setPeerHost("10.2.3.16:8080"); segment.ref(ref1); segment.ref(ref1, false); TraceSegmentRef ref2 = new TraceSegmentRef(); ref2.setTraceSegmentId("parent_trace_1"); ref2.setSpanId(5); ref2.setApplicationCode("REMOTE_APP"); ref2.setPeerHost("10.2.3.16:8080"); segment.ref(ref2); segment.ref(ref2, false); TraceSegmentRef ref3 = new TraceSegmentRef(); ref3.setTraceSegmentId("parent_trace_1"); ref3.setSpanId(5); ref3.setApplicationCode("REMOTE_APP"); ref3.setPeerHost("10.2.3.16:8080"); segment.ref(ref3); segment.ref(ref3, false); Span span1 = new Span(1, "/serviceA"); Tags.SPAN_LAYER.asHttp(span1); Loading skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/api/context/TracerContext.java +19 −1 Original line number Diff line number Diff line Loading @@ -135,12 +135,30 @@ public final class TracerContext { * ContextCarrier#deserialize(String)} called. */ public void extract(ContextCarrier carrier) { if(carrier.isValid()) { this.segment.ref(getRef(carrier)); } } /** * Ref this {@link ContextCarrier} to this {@link TraceSegment}, and support multi-extract for supporting batch process, like MQ. * * @param carrier holds the snapshot, if get this {@link ContextCarrier} from remote, make sure {@link * ContextCarrier#deserialize(String)} called. */ public void multiExtract(ContextCarrier carrier){ if(carrier.isValid()) { this.segment.ref(getRef(carrier), false); } } private TraceSegmentRef getRef(ContextCarrier carrier){ TraceSegmentRef ref = new TraceSegmentRef(); ref.setTraceSegmentId(carrier.getTraceSegmentId()); ref.setSpanId(carrier.getSpanId()); ref.setApplicationCode(carrier.getApplicationCode()); ref.setPeerHost(carrier.getPeerHost()); this.segment.ref(ref); return ref; } /** Loading Loading
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java +25 −7 Original line number Diff line number Diff line Loading @@ -87,12 +87,19 @@ public class TraceSegment implements ISerializable<SegmentMessage> { /** * Establish the link between this segment and its parents. * When {@param primaryOnly} is true; * The first time, you {@link #ref(TraceSegmentRef)} to parent, it is affirmed as {@link #primaryRef}. * And others are affirmed as {@link #refs}. * * @param refSegment {@link TraceSegmentRef} * @param primaryOnly if true, set {@param refSegment} to {@link #primaryRef} only. */ public void ref(TraceSegmentRef refSegment) { public void ref(TraceSegmentRef refSegment, boolean primaryOnly) { if(primaryOnly){ if (primaryRef == null) { primaryRef = refSegment; } }else { if (primaryRef == null) { primaryRef = refSegment; } else { Loading @@ -102,6 +109,17 @@ public class TraceSegment implements ISerializable<SegmentMessage> { refs.add(refSegment); } } } /** * Set to {@link #primaryRef} only, * based on {@link #ref(TraceSegmentRef, boolean)} * * @param refSegment {@link TraceSegmentRef} */ public void ref(TraceSegmentRef refSegment){ ref(refSegment, true); } /** * After {@link Span} is finished, as be controller by "skywalking-api" module, Loading
skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java +6 −6 Original line number Diff line number Diff line Loading @@ -24,17 +24,17 @@ public class TraceSegmentTestCase { TraceSegmentRef ref1 = new TraceSegmentRef(); ref1.setTraceSegmentId("parent_trace_0"); ref1.setSpanId(1); segment.ref(ref1); segment.ref(ref1, false); TraceSegmentRef ref2 = new TraceSegmentRef(); ref2.setTraceSegmentId("parent_trace_1"); ref2.setSpanId(5); segment.ref(ref2); segment.ref(ref2, false); TraceSegmentRef ref3 = new TraceSegmentRef(); ref3.setTraceSegmentId("parent_trace_1"); ref3.setSpanId(5); segment.ref(ref3); segment.ref(ref3, false); Assert.assertEquals(ref1, segment.getPrimaryRef()); Assert.assertEquals(ref2, segment.getRefs().get(0)); Loading Loading @@ -75,21 +75,21 @@ public class TraceSegmentTestCase { ref1.setSpanId(1); ref1.setApplicationCode("REMOTE_APP"); ref1.setPeerHost("10.2.3.16:8080"); segment.ref(ref1); segment.ref(ref1, false); TraceSegmentRef ref2 = new TraceSegmentRef(); ref2.setTraceSegmentId("parent_trace_1"); ref2.setSpanId(5); ref2.setApplicationCode("REMOTE_APP"); ref2.setPeerHost("10.2.3.16:8080"); segment.ref(ref2); segment.ref(ref2, false); TraceSegmentRef ref3 = new TraceSegmentRef(); ref3.setTraceSegmentId("parent_trace_1"); ref3.setSpanId(5); ref3.setApplicationCode("REMOTE_APP"); ref3.setPeerHost("10.2.3.16:8080"); segment.ref(ref3); segment.ref(ref3, false); Span span1 = new Span(1, "/serviceA"); Tags.SPAN_LAYER.asHttp(span1); Loading
skywalking-sniffer/skywalking-api/src/main/java/com/a/eye/skywalking/api/context/TracerContext.java +19 −1 Original line number Diff line number Diff line Loading @@ -135,12 +135,30 @@ public final class TracerContext { * ContextCarrier#deserialize(String)} called. */ public void extract(ContextCarrier carrier) { if(carrier.isValid()) { this.segment.ref(getRef(carrier)); } } /** * Ref this {@link ContextCarrier} to this {@link TraceSegment}, and support multi-extract for supporting batch process, like MQ. * * @param carrier holds the snapshot, if get this {@link ContextCarrier} from remote, make sure {@link * ContextCarrier#deserialize(String)} called. */ public void multiExtract(ContextCarrier carrier){ if(carrier.isValid()) { this.segment.ref(getRef(carrier), false); } } private TraceSegmentRef getRef(ContextCarrier carrier){ TraceSegmentRef ref = new TraceSegmentRef(); ref.setTraceSegmentId(carrier.getTraceSegmentId()); ref.setSpanId(carrier.getSpanId()); ref.setApplicationCode(carrier.getApplicationCode()); ref.setPeerHost(carrier.getPeerHost()); this.segment.ref(ref); return ref; } /** Loading