From 52883b8f43369cbb7dca9bdb51a748ee993ab94d Mon Sep 17 00:00:00 2001 From: wusheng Date: Sun, 5 Mar 2017 21:10:51 +0800 Subject: [PATCH] fix serialize/deserialize issue. --- .../a/eye/skywalking/trace/TraceSegment.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java index b83385930..07830718f 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java @@ -189,12 +189,16 @@ public class TraceSegment implements ISerializable { segmentBuilder.setStartTime(startTime); segmentBuilder.setEndTime(endTime); segmentBuilder.setApplicationCode(applicationCode); - segmentBuilder.setPrimaryRef(primaryRef.serialize()); - for (TraceSegmentRef ref : refs) { - segmentBuilder.addRefs(ref.serialize()); + if(primaryRef != null) { + segmentBuilder.setPrimaryRef(primaryRef.serialize()); } - for (Span span : spans) { - segmentBuilder.addSpans(span.serialize()); + if(refs != null && refs.size() > 0) { + for (TraceSegmentRef ref : refs) { + segmentBuilder.addRefs(ref.serialize()); + } + for (Span span : spans) { + segmentBuilder.addSpans(span.serialize()); + } } return segmentBuilder.build(); } @@ -205,9 +209,12 @@ public class TraceSegment implements ISerializable { startTime = message.getStartTime(); endTime = message.getEndTime(); applicationCode = message.getApplicationCode(); - (primaryRef = new TraceSegmentRef()).deserialize(message.getPrimaryRef()); + SegmentRefMessage messagePrimaryRef = message.getPrimaryRef(); + if(messagePrimaryRef != null) { + (primaryRef = new TraceSegmentRef()).deserialize(messagePrimaryRef); + } List refsList = message.getRefsList(); - if (refsList != null) { + if (refsList != null && refsList.size() > 0) { this.refs = new LinkedList(); for (SegmentRefMessage refMessage : refsList) { TraceSegmentRef ref = new TraceSegmentRef();