From 96d5edfcd1c8f7fca60b521efe8631eb4faeeb0f Mon Sep 17 00:00:00 2001 From: Woonduk Kang Date: Fri, 8 Mar 2013 08:52:28 +0000 Subject: [PATCH] =?UTF-8?q?[=EA=B0=95=EC=9A=B4=EB=8D=95]=20[LUCYSUS-1744]?= =?UTF-8?q?=20common=EC=97=90=20=EC=9E=88=EB=8A=94=20SpanEvent=EB=A5=BC=20?= =?UTF-8?q?SpanEventBo=EB=A1=9C=20=EB=B3=80=EA=B2=BD.=20ServiceType?= =?UTF-8?q?=EC=97=90=20includeDestinationId=EC=98=B5=EC=85=98=EC=9D=84=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=EC=8B=9C=EC=BC=9C=20ApiType=EC=97=90=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=EC=97=AC=EB=B6=80=EB=A5=BC=20=EC=98=B5?= =?UTF-8?q?=EC=85=98=ED=99=94=20=EC=8B=9C=ED=82=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-web/trunk@1305 84d0f5b1-2673-498c-a247-62c4ff18d310 --- .../calltree/server/AgentIdNodeSelector.java | 6 ++-- .../server/ApplicationIdNodeSelector.java | 6 ++-- .../web/calltree/server/NodeSelector.java | 4 +-- .../nhn/hippo/web/calltree/server/Server.java | 25 ++++++++--------- .../web/calltree/server/ServerCallTree.java | 28 +++++++++---------- .../hippo/web/calltree/span/SpanAlign.java | 8 +++--- .../hippo/web/calltree/span/SpanAligner2.java | 6 ++-- .../web/calltree/span/SpanPopulator.java | 14 +++++----- .../com/nhn/hippo/web/mapper/SpanMapper.java | 8 +++--- .../web/service/FlowChartServiceImpl.java | 16 +++++------ .../nhn/hippo/web/vo/callstacks/Record.java | 8 ++++-- .../hippo/web/vo/callstacks/RecordSet.java | 20 ++++++------- 12 files changed, 76 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java b/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java index 316b86814..695779aae 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/AgentIdNodeSelector.java @@ -1,7 +1,7 @@ package com.nhn.hippo.web.calltree.server; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; /** * @@ -14,8 +14,8 @@ public class AgentIdNodeSelector implements NodeSelector { } @Override - public String getServerId(SpanEvent spanEvent) { - return spanEvent.getEndPoint(); + public String getServerId(SpanEventBo spanEventBo) { + return spanEventBo.getEndPoint(); } } diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java b/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java index 3d7c6bb2b..fa8c1d45b 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/ApplicationIdNodeSelector.java @@ -1,7 +1,7 @@ package com.nhn.hippo.web.calltree.server; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; /** * @@ -13,7 +13,7 @@ public class ApplicationIdNodeSelector implements NodeSelector { } @Override - public String getServerId(SpanEvent spanEvent) { - return spanEvent.getDestinationId(); + public String getServerId(SpanEventBo spanEventBo) { + return spanEventBo.getDestinationId(); } } diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java b/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java index 9dca50ec6..3f3be1c2d 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/NodeSelector.java @@ -1,7 +1,7 @@ package com.nhn.hippo.web.calltree.server; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; /** * @@ -10,6 +10,6 @@ public interface NodeSelector { String getServerId(SpanBo span); - String getServerId(SpanEvent spanEvent); + String getServerId(SpanEventBo spanEventBo); } diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/Server.java b/src/main/java/com/nhn/hippo/web/calltree/server/Server.java index 37823ef23..97204ce35 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/Server.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/Server.java @@ -5,7 +5,7 @@ import java.util.Set; import com.profiler.common.ServiceType; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; /** * @author netspider @@ -20,25 +20,24 @@ public class Server implements Comparable { protected int recursiveCallCount; - public Server(SpanEvent spanEvent, NodeSelector nodeSelector) { - if (spanEvent.getServiceType().isTerminal()) { - this.hosts.add(spanEvent.getAgentId()); + public Server(SpanEventBo spanEventBo, NodeSelector nodeSelector) { + if (spanEventBo.getServiceType().isTerminal()) { + this.hosts.add(spanEventBo.getAgentId()); } else { - this.hosts.add(spanEvent.getEndPoint()); + this.hosts.add(spanEventBo.getEndPoint()); } - if (spanEvent.getServiceType().isRpcClient()) { + if (spanEventBo.getServiceType().isRpcClient()) { // this is unknown cloud, there is not exists the child spanEvent. - this.id = spanEvent.getEndPoint(); - this.applicationName = spanEvent.getEndPoint(); + this.id = spanEventBo.getEndPoint(); + this.applicationName = spanEventBo.getEndPoint(); this.serviceType = ServiceType.UNKNOWN_CLOUD; } else { - this.id = nodeSelector.getServerId(spanEvent); - this.applicationName = spanEvent.getDestinationId(); - this.serviceType = spanEvent.getServiceType(); + this.id = nodeSelector.getServerId(spanEventBo); + this.applicationName = spanEventBo.getDestinationId(); + this.serviceType = spanEventBo.getServiceType(); } -// this.endPoint = spanEvent.getEndPoint(); this.recursiveCallCount = 0; } @@ -53,7 +52,7 @@ public class Server implements Comparable { } this.applicationName = span.getApplicationId(); -// this.endPoint = span.getEndPoint(); + this.recursiveCallCount = span.getRecursiveCallCount(); this.serviceType = span.getServiceType(); } diff --git a/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java b/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java index 7eb4af998..cca7b7975 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java +++ b/src/main/java/com/nhn/hippo/web/calltree/server/ServerCallTree.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import com.profiler.common.bo.SpanEventBo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,7 +15,6 @@ import com.nhn.hippo.web.vo.ResponseHistogram; import com.nhn.hippo.web.vo.TerminalStatistics; import com.profiler.common.ServiceType; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; /** * Call Tree @@ -34,7 +34,7 @@ public class ServerCallTree { // temporary variables private final List spans = new ArrayList(); - private final List subspans = new ArrayList(); + private final List subspans = new ArrayList(); private final Map spanIdToServerId = new HashMap(); private final Map spanIdToClientId = new HashMap(); private final Map terminalRequests = new HashMap(); @@ -70,22 +70,22 @@ public class ServerCallTree { spanIdToClientId.put(spanId, server.getId()); } - public void addSpanEventList(List spanEventBoList) { - for (SpanEvent spanEventBo : spanEventBoList) { + public void addSpanEventList(List spanEventBoList) { + for (SpanEventBo spanEventBo : spanEventBoList) { this.addSubSpan(spanEventBo); } } - public void addSubSpan(SpanEvent spanEvent) { - Server server = new Server(spanEvent, nodeSelector); + public void addSubSpan(SpanEventBo spanEventBo) { + Server server = new Server(spanEventBo, nodeSelector); if (server.getId() == null) { return; } - addServer(spanEvent.getDestinationId(), server); + addServer(spanEventBo.getDestinationId(), server); - subspans.add(spanEvent); + subspans.add(spanEventBo); } public void addSpanList(List spanList) { @@ -177,8 +177,8 @@ public class ServerCallTree { } // add terminal nodes - for (SpanEvent span : subspans) { - String from = String.valueOf(span.getSpanId()); + for (SpanEventBo spanEventBo : subspans) { + String from = String.valueOf(spanEventBo.getSpanId()); String to; // if (span.getServiceType().isRpcClient()) { @@ -187,17 +187,17 @@ public class ServerCallTree { // } else { // to = String.valueOf(span.getServiceName()); // } - to = span.getDestinationId(); + to = spanEventBo.getDestinationId(); Server fromServer = servers.get(spanIdToServerId.get(from)); Server toServer = servers.get(spanIdToServerId.get(to)); - ResponseHistogram histogram = new ResponseHistogram(span.getServiceType()); - histogram.addSample(span.getEndElapsed()); + ResponseHistogram histogram = new ResponseHistogram(spanEventBo.getServiceType()); + histogram.addSample(spanEventBo.getEndElapsed()); ServerRequest serverRequest = new ServerRequest(fromServer, toServer, histogram); if (serverRequests.containsKey(serverRequest.getId())) { - serverRequests.get(serverRequest.getId()).getHistogram().addSample(span.getEndElapsed()); + serverRequests.get(serverRequest.getId()).getHistogram().addSample(spanEventBo.getEndElapsed()); } else { serverRequests.put(serverRequest.getId(), serverRequest); } diff --git a/src/main/java/com/nhn/hippo/web/calltree/span/SpanAlign.java b/src/main/java/com/nhn/hippo/web/calltree/span/SpanAlign.java index 99c91cdc7..5ac34f437 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/span/SpanAlign.java +++ b/src/main/java/com/nhn/hippo/web/calltree/span/SpanAlign.java @@ -1,7 +1,7 @@ package com.nhn.hippo.web.calltree.span; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; /** * @@ -9,7 +9,7 @@ import com.profiler.common.bo.SpanEvent; public class SpanAlign { private int depth; private SpanBo spanBo; - private SpanEvent spanEventBo; + private SpanEventBo spanEventBo; private boolean span = true; public SpanAlign(int depth, SpanBo spanBo) { @@ -18,7 +18,7 @@ public class SpanAlign { this.span = true; } - public SpanAlign(int depth, SpanBo spanBo, SpanEvent spanEventBo) { + public SpanAlign(int depth, SpanBo spanBo, SpanEventBo spanEventBo) { this.depth = depth; this.spanBo = spanBo; this.spanEventBo = spanEventBo; @@ -41,7 +41,7 @@ public class SpanAlign { return spanBo; } - public SpanEvent getSpanEventBo() { + public SpanEventBo getSpanEventBo() { return spanEventBo; } diff --git a/src/main/java/com/nhn/hippo/web/calltree/span/SpanAligner2.java b/src/main/java/com/nhn/hippo/web/calltree/span/SpanAligner2.java index afb8abf2c..ca0f04d4c 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/span/SpanAligner2.java +++ b/src/main/java/com/nhn/hippo/web/calltree/span/SpanAligner2.java @@ -3,7 +3,7 @@ package com.nhn.hippo.web.calltree.span; import java.util.*; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; /** * @@ -56,11 +56,11 @@ public class SpanAligner2 { SpanAlign element = new SpanAlign(depth, parentSpan); container.add(element); - List spanEventBoList = parentSpan.getSpanEventBoList(); + List spanEventBoList = parentSpan.getSpanEventBoList(); if (spanEventBoList == null) { return; } - for (SpanEvent spanEventBo : spanEventBoList) { + for (SpanEventBo spanEventBo : spanEventBoList) { if (spanEventBo.getDepth() != -1) { depth = spanDepth + spanEventBo.getDepth() + 1; } diff --git a/src/main/java/com/nhn/hippo/web/calltree/span/SpanPopulator.java b/src/main/java/com/nhn/hippo/web/calltree/span/SpanPopulator.java index 1d120782e..c81672066 100644 --- a/src/main/java/com/nhn/hippo/web/calltree/span/SpanPopulator.java +++ b/src/main/java/com/nhn/hippo/web/calltree/span/SpanPopulator.java @@ -1,7 +1,7 @@ package com.nhn.hippo.web.calltree.span; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; import java.util.ArrayList; import java.util.Collections; @@ -38,8 +38,8 @@ public class SpanPopulator { SpanBo span = spanAlign.getSpanBo(); populatedList.add(spanAlign); long startTime = span.getStartTime(); - List spanEventBoList = sortSpanEvent(span); - for (SpanEvent spanEventBo : spanEventBoList) { + List spanEventBoList = sortSpanEvent(span); + for (SpanEventBo spanEventBo : spanEventBoList) { long subStartTime = startTime + spanEventBo.getStartElapsed(); long nextSpanStartTime = getNextSpanStartTime(); if (subStartTime <= nextSpanStartTime) { @@ -65,14 +65,14 @@ public class SpanPopulator { return list.get(nextIndex).getSpanBo().getStartTime(); } - private List sortSpanEvent(SpanBo span) { - List spanEventBoList = span.getSpanEventBoList(); + private List sortSpanEvent(SpanBo span) { + List spanEventBoList = span.getSpanEventBoList(); if (spanEventBoList == null) { return Collections.emptyList(); } - Collections.sort(spanEventBoList, new Comparator() { + Collections.sort(spanEventBoList, new Comparator() { @Override - public int compare(SpanEvent o1, SpanEvent o2) { + public int compare(SpanEventBo o1, SpanEventBo o2) { long o1Timestamp = o1.getSequence(); long o2Timestamp = o2.getSequence(); if (o1Timestamp > o2Timestamp) { diff --git a/src/main/java/com/nhn/hippo/web/mapper/SpanMapper.java b/src/main/java/com/nhn/hippo/web/mapper/SpanMapper.java index 0e4d5de35..bed3af8fe 100644 --- a/src/main/java/com/nhn/hippo/web/mapper/SpanMapper.java +++ b/src/main/java/com/nhn/hippo/web/mapper/SpanMapper.java @@ -2,7 +2,7 @@ package com.nhn.hippo.web.mapper; import com.profiler.common.bo.AnnotationBo; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; import com.profiler.common.hbase.HBaseTables; import com.profiler.common.util.BytesUtils; import org.apache.hadoop.hbase.KeyValue; @@ -47,7 +47,7 @@ public class SpanMapper implements RowMapper> { KeyValue[] keyList = result.raw(); List spanList = new ArrayList(); Map spanMap = new HashMap(); - List spanEventBoList = new ArrayList(); + List spanEventBoList = new ArrayList(); for (KeyValue kv : keyList) { // family name "span"일때로만 한정. if (kv.getFamilyLength() == HBaseTables.TRACES_CF_SPAN.length) { @@ -64,7 +64,7 @@ public class SpanMapper implements RowMapper> { spanList.add(spanBo); spanMap.put(spanBo.getSpanId(), spanBo); } else if (kv.getFamilyLength() == HBaseTables.TRACES_CF_TERMINALSPAN.length) { - SpanEvent spanEventBo = new SpanEvent(); + SpanEventBo spanEventBo = new SpanEventBo(); spanEventBo.setMostTraceId(most); spanEventBo.setLeastTraceId(least); @@ -82,7 +82,7 @@ public class SpanMapper implements RowMapper> { spanEventBoList.add(spanEventBo); } } - for (SpanEvent spanEventBo : spanEventBoList) { + for (SpanEventBo spanEventBo : spanEventBoList) { SpanBo spanBo = spanMap.get(spanEventBo.getSpanId()); if (spanBo != null) { spanBo.addSpanEvent(spanEventBo); diff --git a/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java b/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java index c6f7d98b4..97225727e 100755 --- a/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java +++ b/src/main/java/com/nhn/hippo/web/service/FlowChartServiceImpl.java @@ -10,7 +10,7 @@ import java.util.Set; import com.nhn.hippo.web.calltree.server.AgentIdNodeSelector; import com.nhn.hippo.web.calltree.server.ApplicationIdNodeSelector; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -130,22 +130,22 @@ public class FlowChartServiceImpl implements FlowChartService { ServerCallTree tree = createServerCallTree(transaction); // subSpan에서 record할 데이터만 골라낸다. - List spanEventBoList = findRecordStatisticsSpanEventData(transaction, endPoints); + List spanEventBoList = findRecordStatisticsSpanEventData(transaction, endPoints); tree.addSpanEventList(spanEventBoList); return tree.build(); } - private List findRecordStatisticsSpanEventData(List transaction, Set endPoints) { - List filterSpanEvent = new ArrayList(); + private List findRecordStatisticsSpanEventData(List transaction, Set endPoints) { + List filterSpanEventBo = new ArrayList(); for (SpanBo eachTransaction : transaction) { - List spanEventBoList = eachTransaction.getSpanEventBoList(); + List spanEventBoList = eachTransaction.getSpanEventBoList(); if (spanEventBoList == null) { continue; } - for (SpanEvent spanEventBo : spanEventBoList) { + for (SpanEventBo spanEventBo : spanEventBoList) { // 통계정보로 잡지 않을 데이터는 스킵한다. if (!spanEventBo.getServiceType().isRecordStatistics()) { continue; @@ -154,11 +154,11 @@ public class FlowChartServiceImpl implements FlowChartService { // remove subspan of the rpc client if (!endPoints.contains(spanEventBo.getEndPoint())) { // this is unknown cloud - filterSpanEvent.add(spanEventBo); + filterSpanEventBo.add(spanEventBo); } } } - return filterSpanEvent; + return filterSpanEventBo; } /** diff --git a/src/main/java/com/nhn/hippo/web/vo/callstacks/Record.java b/src/main/java/com/nhn/hippo/web/vo/callstacks/Record.java index 44345fd3c..97bf0ff2c 100644 --- a/src/main/java/com/nhn/hippo/web/vo/callstacks/Record.java +++ b/src/main/java/com/nhn/hippo/web/vo/callstacks/Record.java @@ -77,10 +77,14 @@ public class Record { // parameter일 경우 serviceType이 없음. return ""; } - return serviceType.getDesc(); } - return serviceType.getDesc() + "(" + destinationId + ")"; + if (serviceType.isIncludeDestinationId()) { + return serviceType.getDesc() + "(" + destinationId + ")"; + } else { + return serviceType.getDesc(); + } + } public boolean isExcludeFromTimeline() { diff --git a/src/main/java/com/nhn/hippo/web/vo/callstacks/RecordSet.java b/src/main/java/com/nhn/hippo/web/vo/callstacks/RecordSet.java index 3e025fb37..170cf0e57 100644 --- a/src/main/java/com/nhn/hippo/web/vo/callstacks/RecordSet.java +++ b/src/main/java/com/nhn/hippo/web/vo/callstacks/RecordSet.java @@ -8,7 +8,7 @@ import com.nhn.hippo.web.calltree.span.SpanAlign; import com.profiler.common.AnnotationKey; import com.profiler.common.bo.AnnotationBo; import com.profiler.common.bo.SpanBo; -import com.profiler.common.bo.SpanEvent; +import com.profiler.common.bo.SpanEventBo; import com.profiler.common.util.AnnotationUtils; /** @@ -105,24 +105,24 @@ public class RecordSet { recordset.add(record); addAnnotationRecord(spanAlign.getDepth() + 1, spanBo.getAnnotationBoList()); } else { - SpanEvent spanEvent = spanAlign.getSpanEventBo(); + SpanEventBo spanEventBo = spanAlign.getSpanEventBo(); - AnnotationUtils.sortAnnotationListByKey(spanEvent); - String method = (String) AnnotationUtils.getDisplayMethod(spanEvent); - Object arguments = AnnotationUtils.getDisplayArgument(spanEvent); + AnnotationUtils.sortAnnotationListByKey(spanEventBo); + String method = (String) AnnotationUtils.getDisplayMethod(spanEventBo); + Object arguments = AnnotationUtils.getDisplayArgument(spanEventBo); - long begin = spanAlign.getSpanBo().getStartTime() + spanEvent.getStartElapsed(); - long elapsed = spanEvent.getEndElapsed(); + long begin = spanAlign.getSpanBo().getStartTime() + spanEventBo.getStartElapsed(); + long elapsed = spanEventBo.getEndElapsed(); if (!marked) { setStartTime(begin); setEndTime(begin + elapsed); marked = true; } - String destinationId = spanEvent.getDestinationId(); + String destinationId = spanEventBo.getDestinationId(); // recordset.add(new Record(spanAlign.getDepth(), true, method, (arguments != null) ? arguments.toString() : "", begin, elapsed, spanEvent.getAgentId(), spanEvent.getServiceName(), spanEvent.getServiceType(), destinationId)); - recordset.add(new Record(spanAlign.getDepth(), true, method, (arguments != null) ? arguments.toString() : "", begin, elapsed, spanEvent.getAgentId(), spanEvent.getDestinationId(), spanEvent.getServiceType(), destinationId)); - addAnnotationRecord(spanAlign.getDepth() + 1, spanEvent.getAnnotationBoList()); + recordset.add(new Record(spanAlign.getDepth(), true, method, (arguments != null) ? arguments.toString() : "", begin, elapsed, spanEventBo.getAgentId(), spanEventBo.getDestinationId(), spanEventBo.getServiceType(), destinationId)); + addAnnotationRecord(spanAlign.getDepth() + 1, spanEventBo.getAnnotationBoList()); } } }