diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/filter/impl/ProcessCostTimeFilter.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/filter/impl/ProcessCostTimeFilter.java index cd1190dfe..fcca43874 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/filter/impl/ProcessCostTimeFilter.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/filter/impl/ProcessCostTimeFilter.java @@ -6,31 +6,35 @@ import com.ai.cloud.skywalking.analysis.model.CostMap; import com.ai.cloud.skywalking.analysis.model.SpanEntry; public class ProcessCostTimeFilter extends SpanNodeProcessFilter { - @Override - public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) { - long subNodeCost = spanEntry.getCost(); - node.setCost(spanEntry.getCost()); + @Override + public void doFilter(SpanEntry spanEntry, ChainNode node, CostMap costMap) { + node.setCost(spanEntry.getCost()); + + this.saveCostAsSubNodeCost(spanEntry, node, costMap); + this.computeChainNodeCost(costMap, node); - if (costMap.exists(spanEntry.getParentLevelId())) { - subNodeCost += costMap.get(spanEntry.getParentLevelId()); - } + this.doNext(spanEntry, node, costMap); + } - costMap.put(spanEntry.getParentLevelId(), subNodeCost); - - this.computeChainNodeCost(costMap, node); + private void saveCostAsSubNodeCost(SpanEntry spanEntry, ChainNode node, + CostMap costMap) { + long subNodeCost = spanEntry.getCost(); + if (costMap.exists(spanEntry.getParentLevelId())) { + subNodeCost += costMap.get(spanEntry.getParentLevelId()); + } - this.doNext(spanEntry, node, costMap); - } - - private void computeChainNodeCost(CostMap costMap, ChainNode node) { - String levelId = node.getParentLevelId(); - if (levelId != null && levelId.length() > 0) { - levelId += "."; - } - levelId += node.getLevelId() + ""; + costMap.put(spanEntry.getParentLevelId(), subNodeCost); + } - if (costMap.exists(levelId)) { - node.setCost(node.getCost() - costMap.get(levelId)); - } - } + private void computeChainNodeCost(CostMap costMap, ChainNode node) { + String levelId = node.getParentLevelId(); + if (levelId != null && levelId.length() > 0) { + levelId += "."; + } + levelId += node.getLevelId() + ""; + + if (costMap.exists(levelId)) { + node.setCost(node.getCost() - costMap.get(levelId)); + } + } }