From 4d9c70b686acde50ab025ee6e5957ef5ca00e0d5 Mon Sep 17 00:00:00 2001 From: Woonduk Kang Date: Tue, 12 Feb 2013 08:28:23 +0000 Subject: [PATCH] =?UTF-8?q?[=EA=B0=95=EC=9A=B4=EB=8D=95]=20[LUCYSUS-1744]?= =?UTF-8?q?=20agent=EC=9D=98=20=EC=9C=A0=EB=8B=88=ED=81=AC=EC=84=B1?= =?UTF-8?q?=EC=9D=84=20=EB=86=92=EC=9D=B4=EA=B8=B0=20=EC=9C=84=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20short=20=ED=83=80=EC=9E=85=EC=9D=98=20identifier?= =?UTF-8?q?=EB=A5=BC=20=EC=B6=94=EA=B0=80=ED=95=A8.=20apimetainfo,=20sqlme?= =?UTF-8?q?atainfo=EC=97=90=EC=84=9C=20validation=EC=B2=B4=ED=81=AC?= =?UTF-8?q?=EB=A5=BC=20=ED=95=A0=EB=95=8C=20=EC=82=AC=EC=9A=A9=ED=95=A8.?= 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@1179 84d0f5b1-2673-498c-a247-62c4ff18d310 --- src/main/java/com/profiler/context/Span.java | 12 +- .../java/com/profiler/context/SubSpan.java | 11 +- src/main/java/com/profiler/context/Trace.java | 164 ++++++------------ 3 files changed, 63 insertions(+), 124 deletions(-) diff --git a/src/main/java/com/profiler/context/Span.java b/src/main/java/com/profiler/context/Span.java index e4ecc3c3d..50574494a 100644 --- a/src/main/java/com/profiler/context/Span.java +++ b/src/main/java/com/profiler/context/Span.java @@ -20,7 +20,7 @@ public class Span implements Thriftable { private String rpc; private ServiceType serviceType; private String endPoint; - private boolean exception; + private int exception; private final List annotations = new ArrayList(5); @@ -98,12 +98,12 @@ public class Span implements Thriftable { this.subSpanList = subSpanList; } - public boolean isException() { + public int getException() { return exception; } - public void setException(boolean exception) { - this.exception = exception; + public void setException(int exception) { + this.exception = exception; } public String toString() { @@ -145,7 +145,9 @@ public class Span implements Thriftable { span.setSpanId(traceID.getSpanId()); span.setParentSpanId(traceID.getParentSpanId()); span.setEndPoint(endPoint); - span.setErr(exception); + if (exception != 0) { + span.setErr(exception); + } // 여기서 데이터 인코딩을 하자. List annotationList = new ArrayList(annotations.size()); diff --git a/src/main/java/com/profiler/context/SubSpan.java b/src/main/java/com/profiler/context/SubSpan.java index 38a7211cd..5bf877c0c 100644 --- a/src/main/java/com/profiler/context/SubSpan.java +++ b/src/main/java/com/profiler/context/SubSpan.java @@ -23,8 +23,7 @@ public class SubSpan implements Thriftable { private String rpc; private ServiceType serviceType; private String endPoint; - private boolean exception; - + private final List annotations = new ArrayList(5); private int nextSpanId = -1; @@ -106,13 +105,7 @@ public class SubSpan implements Thriftable { this.serviceType = serviceType; } - public boolean isException() { - return exception; - } - public void setException(boolean exception) { - this.exception = exception; - } public int getDepth() { return depth; @@ -144,7 +137,6 @@ public class SubSpan implements Thriftable { sb.append(", ServiceName=").append(serviceName); sb.append(", ServiceType=").append(serviceType); sb.append(", EndPoint=").append(endPoint); - sb.append(", Exception=").append(exception); sb.append(", Seq=").append(sequence); sb.append(",\n\t Annotations = {"); for (Annotation a : annotations) { @@ -188,7 +180,6 @@ public class SubSpan implements Thriftable { } subSpan.setEndPoint(endPoint); - subSpan.setErr(exception); // 여기서 데이터 인코딩을 하자. List annotationList = new ArrayList(annotations.size()); diff --git a/src/main/java/com/profiler/context/Trace.java b/src/main/java/com/profiler/context/Trace.java index cb176016a..27857b594 100644 --- a/src/main/java/com/profiler/context/Trace.java +++ b/src/main/java/com/profiler/context/Trace.java @@ -116,10 +116,6 @@ public final class Trace { return stackFrame.getAfterTime(); } -// public void attachObject(Object object) { -// StackFrame stackFrame = getCurrentStackFrame(); -// stackFrame.attachObject(object); -// } public void traceBlockBegin(int stackId) { int currentStackIndex = callStack.push(); @@ -142,14 +138,6 @@ public final class Trace { traceBlockEnd(NOCHECK_STACKID); } -// public void traceBlockFinalEnd() { -// StackFrame currentStackFrame = callStack.getCurrentStackFrame(); -// if (currentStackFrame.getStackFrameId() != ROOT_STACKID) { -// // 자체 stack dump를 하면 오류발견이 쉬울것으로 생각됨. -// logger.warning("Corrupted RootCallStack found. StackId not matched"); -// } -// logSpan(currentStackFrame); -// } public void traceBlockEnd(int stackId) { StackFrame currentStackFrame = callStack.getCurrentStackFrame(); @@ -190,25 +178,19 @@ public final class Trace { } void logSpan(SubSpan subSpan) { - try { - if (isDebug) { - logger.fine("[WRITE SubSPAN]" + subSpan + " CurrentThreadID=" + Thread.currentThread().getId() + ",\n\t CurrentThreadName=" + Thread.currentThread().getName() + "\n\n"); - } - this.storage.store(subSpan); - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + if (isDebug) { + Thread th = Thread.currentThread(); + logger.fine("[WRITE SubSPAN]" + subSpan + ", Thread ID=" + th.getId() + " Name=" + th.getName()); } + this.storage.store(subSpan); } void logSpan(Span span) { - try { - if (isDebug) { - logger.info("[WRITE SPAN]" + span + " CurrentThreadID=" + Thread.currentThread().getId() + ",\n\t CurrentThreadName=" + Thread.currentThread().getName() + "\n\n"); - } - this.storage.store(span); - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + if (isDebug) { + Thread th = Thread.currentThread(); + logger.info("[WRITE SPAN]" + span + ", Thread ID=" + th.getId() + " Name=" + th.getName()); } + this.storage.store(span); } public void recordException(Object result) { @@ -216,15 +198,9 @@ public final class Trace { Throwable th = (Throwable) result; recordAttribute(AnnotationNames.EXCEPTION, th.getMessage()); - try { - StackFrame currentStackFrame = getCurrentStackFrame(); - if (currentStackFrame instanceof RootStackFrame) { - ((RootStackFrame) currentStackFrame).getSpan().setException(true); - } else { - ((SubStackFrame) currentStackFrame).getSubSpan().setException(true); - } - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + Span span = getCallStack().getSpan(); + if (span.getException() == 0) { + span.setException(1); } } } @@ -288,99 +264,69 @@ public final class Trace { } public void recordAttribute(final AnnotationNames key, final Object value) { - if (!tracingEnabled) - return; - - try { - // TODO API 단일화 필요. - StackFrame currentStackFrame = getCurrentStackFrame(); - if (currentStackFrame instanceof RootStackFrame) { - Span span = ((RootStackFrame) currentStackFrame).getSpan(); - span.addAnnotation(new Annotation(key, value)); - } else { - SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); - span.addAnnotation(new Annotation(key, value)); - } - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + // TODO API 단일화 필요. + StackFrame currentStackFrame = getCurrentStackFrame(); + if (currentStackFrame instanceof RootStackFrame) { + Span span = ((RootStackFrame) currentStackFrame).getSpan(); + span.addAnnotation(new Annotation(key, value)); + } else { + SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); + span.addAnnotation(new Annotation(key, value)); } + } public void recordRpcName(final ServiceType serviceType, final String serviceName, final String rpc) { - if (!tracingEnabled) - return; - - try { - // TODO API 단일화 필요. - StackFrame currentStackFrame = getCurrentStackFrame(); - if (currentStackFrame instanceof RootStackFrame) { - Span span = ((RootStackFrame) currentStackFrame).getSpan(); - span.setServiceType(serviceType); - span.setServiceName(serviceName); - span.setRpc(rpc); - } else { - SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); - span.setServiceType(serviceType); - span.setServiceName(serviceName); - span.setRpc(rpc); - } - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + // TODO API 단일화 필요. + StackFrame currentStackFrame = getCurrentStackFrame(); + if (currentStackFrame instanceof RootStackFrame) { + Span span = ((RootStackFrame) currentStackFrame).getSpan(); + span.setServiceType(serviceType); + span.setServiceName(serviceName); + span.setRpc(rpc); + } else { + SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); + span.setServiceType(serviceType); + span.setServiceName(serviceName); + span.setRpc(rpc); } + } public void recordEndPoint(final String endPoint) { - if (!tracingEnabled) - return; // TODO API 단일화 필요. - try { - StackFrame currentStackFrame = getCurrentStackFrame(); - if (currentStackFrame instanceof RootStackFrame) { - Span span = ((RootStackFrame) currentStackFrame).getSpan(); - span.setEndPoint(endPoint); - } else { - SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); - span.setEndPoint(endPoint); - } - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + StackFrame currentStackFrame = getCurrentStackFrame(); + if (currentStackFrame instanceof RootStackFrame) { + Span span = ((RootStackFrame) currentStackFrame).getSpan(); + span.setEndPoint(endPoint); + } else { + SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); + span.setEndPoint(endPoint); } + } public void recordNextSpanId(int spanId) { - if (!tracingEnabled) - return; - - try { - StackFrame currentStackFrame = getCurrentStackFrame(); - if (currentStackFrame instanceof RootStackFrame) { - logger.log(Level.WARNING, "OMG. Something's going wrong. Current stackframe is root Span. nextSpanId={}", spanId); - } else { - SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); - span.setNextSpanId(spanId); - } - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + StackFrame currentStackFrame = getCurrentStackFrame(); + if (currentStackFrame instanceof RootStackFrame) { + logger.log(Level.WARNING, "OMG. Something's going wrong. Current stackframe is root Span. nextSpanId={}", spanId); + } else { + SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); + span.setNextSpanId(spanId); } } private void annotate(final AnnotationNames key) { - if (!tracingEnabled) - return; - - try { - StackFrame currentStackFrame = getCurrentStackFrame(); - if (currentStackFrame instanceof RootStackFrame) { - Span span = ((RootStackFrame) currentStackFrame).getSpan(); - span.addAnnotation(new Annotation(key)); - } else { - SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); - span.addAnnotation(new Annotation(key)); - } - } catch (Exception e) { - logger.log(Level.SEVERE, e.getMessage(), e); + StackFrame currentStackFrame = getCurrentStackFrame(); + if (currentStackFrame instanceof RootStackFrame) { + Span span = ((RootStackFrame) currentStackFrame).getSpan(); + span.addAnnotation(new Annotation(key)); + } else { + SubSpan span = ((SubStackFrame) currentStackFrame).getSubSpan(); + span.addAnnotation(new Annotation(key)); } + } public void setTraceContext(TraceContext traceContext) {