From 18ad12b0e3d0ecbcf77b457b4612c0a19ac58c63 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Wed, 11 Oct 2017 21:46:52 +0800 Subject: [PATCH 1/2] fix issue that cannot generate segment cost data when the segment without entry span --- .../segment/cost/SegmentCostSpanListener.java | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java index 179d23c54..2973cefa5 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java @@ -21,10 +21,7 @@ package org.skywalking.apm.collector.agentstream.worker.segment.cost; import java.util.ArrayList; import java.util.List; import org.skywalking.apm.collector.agentstream.worker.cache.ServiceCache; -import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener; -import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener; import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener; -import org.skywalking.apm.collector.agentstream.worker.segment.LocalSpanListener; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.util.TimeBucketUtils; import org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine; @@ -39,7 +36,7 @@ import org.slf4j.LoggerFactory; /** * @author pengys5 */ -public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListener, LocalSpanListener, FirstSpanListener { +public class SegmentCostSpanListener implements FirstSpanListener { private final Logger logger = LoggerFactory.getLogger(SegmentCostSpanListener.class); @@ -50,10 +47,7 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe @Override public void parseFirst(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanObject.getStartTime()); - } - @Override - public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { SegmentCostDataDefine.SegmentCost segmentCost = new SegmentCostDataDefine.SegmentCost(); segmentCost.setSegmentId(segmentId); segmentCost.setApplicationId(applicationId); @@ -68,17 +62,6 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe } segmentCosts.add(segmentCost); - isError = isError || spanObject.getIsError(); - } - - @Override - public void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { - isError = isError || spanObject.getIsError(); - } - - @Override - public void parseLocal(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { - isError = isError || spanObject.getIsError(); } @Override public void build() { @@ -96,4 +79,4 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe } } } -} \ No newline at end of file +} From 6d1aade56486aff59f8934734720e831246a2875 Mon Sep 17 00:00:00 2001 From: ascrutae Date: Thu, 12 Oct 2017 10:05:49 +0800 Subject: [PATCH 2/2] fix status of isError flag is incorrect --- .../segment/cost/SegmentCostSpanListener.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java index 2973cefa5..ace252874 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java @@ -21,7 +21,10 @@ package org.skywalking.apm.collector.agentstream.worker.segment.cost; import java.util.ArrayList; import java.util.List; import org.skywalking.apm.collector.agentstream.worker.cache.ServiceCache; +import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener; +import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener; import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener; +import org.skywalking.apm.collector.agentstream.worker.segment.LocalSpanListener; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.util.TimeBucketUtils; import org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine; @@ -36,7 +39,7 @@ import org.slf4j.LoggerFactory; /** * @author pengys5 */ -public class SegmentCostSpanListener implements FirstSpanListener { +public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListener, LocalSpanListener,FirstSpanListener { private final Logger logger = LoggerFactory.getLogger(SegmentCostSpanListener.class); @@ -62,6 +65,22 @@ public class SegmentCostSpanListener implements FirstSpanListener { } segmentCosts.add(segmentCost); + isError = isError || spanObject.getIsError(); + } + + @Override + public void parseEntry(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { + isError = isError || spanObject.getIsError(); + } + + @Override + public void parseExit(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { + isError = isError || spanObject.getIsError(); + } + + @Override + public void parseLocal(SpanObject spanObject, int applicationId, int applicationInstanceId, String segmentId) { + isError = isError || spanObject.getIsError(); } @Override public void build() {