From 5ed87bbc143e27eb9a601574e4e4d2d2e6bc47ae Mon Sep 17 00:00:00 2001 From: Woonduk Kang Date: Tue, 12 Feb 2013 05:50:37 +0000 Subject: [PATCH] =?UTF-8?q?[=EA=B0=95=EC=9A=B4=EB=8D=95]=20[LUCYSUS-1744]?= =?UTF-8?q?=20=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84=EA=B0=80=20=EB=86=92?= =?UTF-8?q?=EC=9D=80=20=EB=A9=94=EC=8B=9C=EC=A7=80=EC=9D=98=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EB=B3=84=EB=8F=84=20queue=EB=A5=BC=20=EA=B0=80?= =?UTF-8?q?=EC=A7=84=20datasender=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95.=20=20-=20=EC=9A=B0?= =?UTF-8?q?=EC=84=A0=EC=88=9C=EC=9C=84=EA=B0=80=20=EB=86=92=EC=9D=80=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80:=20metadata=EB=A5=98,=20agent=20inf?= =?UTF-8?q?o.?= 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-tomcat-profiler/trunk@1174 84d0f5b1-2673-498c-a247-62c4ff18d310 --- src/main/java/com/profiler/Agent.java | 12 +++++++++--- .../java/com/profiler/context/TraceContext.java | 14 ++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/profiler/Agent.java b/src/main/java/com/profiler/Agent.java index 734c8faac..e76313eb7 100644 --- a/src/main/java/com/profiler/Agent.java +++ b/src/main/java/com/profiler/Agent.java @@ -30,6 +30,8 @@ public class Agent { private final SystemMonitor systemMonitor; private TraceContext traceContext; + + private DataSender priorityDataSender; private DataSender dataSender; private final String agentId; @@ -54,6 +56,7 @@ public class Agent { this.nodeName = getId("hippo.nodeName", machineName); this.applicationName = getId("hippo.applicationName", "UnknownApplicationName"); + this.priorityDataSender = createDataSender(); this.dataSender = createDataSender(); this.startTime = System.currentTimeMillis(); this.identifier = (short) IDENTIFIER_KEY.nextInt(16); @@ -76,6 +79,7 @@ public class Agent { this.traceContext.setAgentId(this.agentId); this.traceContext.setApplicationId(this.applicationName); + this.traceContext.setPriorityDataSender(this.priorityDataSender); if (profilerConfig.isSamplingElapsedTimeBaseEnable()) { TimeBaseStorageFactory timeBaseStorageFactory = new TimeBaseStorageFactory(this.dataSender, this.profilerConfig); @@ -180,9 +184,9 @@ public class Agent { private void send3(AgentInfo agentInfo) { // 특정 collector가 죽더라도 나머지 collector가 받을수 있도록 일부러 중복해서 3번 보낸다. - this.dataSender.send(agentInfo); - this.dataSender.send(agentInfo); - this.dataSender.send(agentInfo); + this.priorityDataSender.send(agentInfo); + this.priorityDataSender.send(agentInfo); + this.priorityDataSender.send(agentInfo); } public void start() { @@ -214,6 +218,8 @@ public class Agent { send3(agentInfo); // 종료 처리 필요. this.dataSender.stop(); + this.priorityDataSender.stop(); + } } diff --git a/src/main/java/com/profiler/context/TraceContext.java b/src/main/java/com/profiler/context/TraceContext.java index 554a921d3..d89727165 100644 --- a/src/main/java/com/profiler/context/TraceContext.java +++ b/src/main/java/com/profiler/context/TraceContext.java @@ -47,6 +47,8 @@ public class TraceContext { private String applicationId; + private DataSender priorityDataSender; + private StorageFactory storageFactory; private LRUCache sqlCache = new LRUCache(1000); @@ -124,8 +126,8 @@ public class TraceContext { apiMetadata.setApiId(result.getId()); apiMetadata.setApiInfo(methodDescriptor.getApiDescriptor()); apiMetadata.setLine(methodDescriptor.getLineNumber()); - DataSender dataSender = storageFactory.getDataSender(); - dataSender.send(apiMetadata); + + this.priorityDataSender.send(apiMetadata); methodDescriptor.setApiId(result.getId()); } return result.getId(); @@ -156,10 +158,14 @@ public class TraceContext { sqlMetaData.setStartTime(Agent.getInstance().getStartTime()); sqlMetaData.setHashCode(normalizedSql.hashCode()); sqlMetaData.setSql(normalizedSql); - // 다른 우선순위가 더 높은 sender가 존재하면 좋을듯 하다. - this.storageFactory.getDataSender().send(sqlMetaData); + + this.priorityDataSender.send(sqlMetaData); } // hashId그냥 return String에서 까보면 됨. return parsingResult; } + + public void setPriorityDataSender(DataSender priorityDataSender) { + this.priorityDataSender = priorityDataSender; + } }