From c90b484f9e3679ece84e3a54555868986869312b Mon Sep 17 00:00:00 2001 From: ascrutae Date: Mon, 7 Mar 2016 14:52:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/chainbuild/entity/CallChainTree.java | 5 ++--- .../analysis/chainbuild/entity/CallChainTreeNode.java | 11 +++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTree.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTree.java index b6e2aece5..19e58e904 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTree.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTree.java @@ -3,6 +3,7 @@ package com.ai.cloud.skywalking.analysis.chainbuild.entity; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainInfo; import com.ai.cloud.skywalking.analysis.chainbuild.po.ChainNode; import com.ai.cloud.skywalking.analysis.chainbuild.util.HBaseUtil; +import com.ai.cloud.skywalking.analysis.chainbuild.util.TokenGenerator; import com.google.gson.Gson; import org.apache.hadoop.hbase.client.Put; @@ -33,14 +34,12 @@ public class CallChainTree { combineChains = new HashMap(); nodes = new HashMap(); this.callEntrance = callEntrance; + this.treeId = TokenGenerator.generateTreeToken(callEntrance); } public static CallChainTree load(String callEntrance) throws IOException { CallChainTree chain = HBaseUtil.loadCallChainTree(callEntrance); chain.hasBeenMergedChainIds.addAll(HBaseUtil.loadHasBeenMergeChainIds(callEntrance)); - if (chain == null) { - chain = new CallChainTree(callEntrance); - } return chain; } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java index 65b1fe1b7..2750ff055 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java @@ -24,13 +24,16 @@ public class CallChainTreeNode { public CallChainTreeNode(ChainNode node) { this.traceLevelId = node.getTraceLevelId(); - chainNodeContainer.put(node.getNodeToken(), new ChainNodeSpecificMinSummary()); + chainNodeContainer = new HashMap(); + this.viewPointId = node.getViewPoint(); } public CallChainTreeNode(String originData) { JsonObject jsonObject = (JsonObject) new JsonParser().parse(originData); traceLevelId = jsonObject.get("traceLevelId").getAsString(); viewPointId = jsonObject.get("viewPointId").getAsString(); + // 每次都只load对应的节点统计结果,不全部load出来 + chainNodeContainer = new HashMap(); } public void mergeIfNess(ChainNode node) { @@ -46,11 +49,11 @@ public class CallChainTreeNode { String keyOfMinSummaryTable = generateKeyOfMinSummaryTable(treeId, calendar); ChainNodeSpecificMinSummary minSummary = chainNodeContainer.get(keyOfMinSummaryTable); if (minSummary == null) { - minSummary = HBaseUtil.loadSpecificMinSummary(keyOfMinSummaryTable, node.getNodeToken()); + minSummary = HBaseUtil.loadSpecificMinSummary(keyOfMinSummaryTable, node.getTraceLevelId()); chainNodeContainer.put(keyOfMinSummaryTable, minSummary); } - minSummary.summary(String.valueOf(calendar.get(Calendar.MINUTE) + 1), node); + minSummary.summary(String.valueOf(calendar.get(Calendar.MINUTE)), node); } private String generateKeyOfMinSummaryTable(String treeId, Calendar calendar) { @@ -68,7 +71,7 @@ public class CallChainTreeNode { } public void saveSummaryResultToHBase() throws IOException, InterruptedException { - List puts = new ArrayList(); + List puts = new ArrayList(); for (Map.Entry entry : chainNodeContainer.entrySet()) { Put put = new Put(entry.getKey().getBytes()); put.addColumn(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME.getBytes()