From 84f6d4618c0ae78c0eff954a7794f095179b580e Mon Sep 17 00:00:00 2001
From: Jan Waller <jwa@informatik.uni-kiel.de>
Date: Fri, 6 Jun 2014 12:38:40 +0200
Subject: [PATCH] bugifx for meta-monitoring

---
 .classpath                                     |  2 +-
 frameworks/Kieker/bin/meta-monitoring.sh       |  4 ++--
 .../MonitoredClassManualInstrumentation.java   | 18 +++++++++++-------
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/.classpath b/.classpath
index a6a0ef1..7ed6e8b 100644
--- a/.classpath
+++ b/.classpath
@@ -4,6 +4,6 @@
 	<classpathentry kind="src" path="frameworks/Kieker/src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="lib" path="lib/commons-cli-1.2.jar"/>
-	<classpathentry kind="lib" path="frameworks/Kieker/lib/kieker-1.10-SNAPSHOT_aspectj.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/Kieker"/>
 	<classpathentry kind="output" path="build-eclipse"/>
 </classpath>
diff --git a/frameworks/Kieker/bin/meta-monitoring.sh b/frameworks/Kieker/bin/meta-monitoring.sh
index 479096b..75f097f 100644
--- a/frameworks/Kieker/bin/meta-monitoring.sh
+++ b/frameworks/Kieker/bin/meta-monitoring.sh
@@ -7,8 +7,8 @@ RESULTSDIR="${BASEDIR}results/"
 
 THREADS=1            ## 1
 RECURSIONDEPTH=10    ## 10
-TOTALCALLS=1000      ## 2000000
-METHODTIME=500000    ## 500000
+TOTALCALLS=20000     ## 20000
+METHODTIME=0         ## 0
 
 #MOREPARAMS="--quickstart"
 MOREPARAMS="${MOREPARAMS} -r kieker.Logger -a mooBench.monitoredApplication.MonitoredClassManualInstrumentation"
diff --git a/frameworks/Kieker/src/mooBench/monitoredApplication/MonitoredClassManualInstrumentation.java b/frameworks/Kieker/src/mooBench/monitoredApplication/MonitoredClassManualInstrumentation.java
index fd276df..1b56258 100644
--- a/frameworks/Kieker/src/mooBench/monitoredApplication/MonitoredClassManualInstrumentation.java
+++ b/frameworks/Kieker/src/mooBench/monitoredApplication/MonitoredClassManualInstrumentation.java
@@ -49,7 +49,7 @@ public final class MonitoredClassManualInstrumentation implements MonitoredClass
 	}
 
 	public final long monitoredMethod(final long methodTime, final int recDepth) {
-		final TraceMetadata trace = MonitoredClassManualInstrumentation.triggerBefore();
+		final boolean newTrace = MonitoredClassManualInstrumentation.triggerBefore();
 		long retval;
 		if (recDepth > 1) {
 			retval = this.monitoredMethod(methodTime, recDepth - 1);
@@ -61,17 +61,17 @@ public final class MonitoredClassManualInstrumentation implements MonitoredClass
 			} while (currentTime < exitTime);
 			retval = currentTime;
 		}
-		MonitoredClassManualInstrumentation.triggerAfter(trace);
+		MonitoredClassManualInstrumentation.triggerAfter(newTrace);
 		return retval;
 	}
 
-	private final static TraceMetadata triggerBefore() {
+	private final static boolean triggerBefore() {
 		if (!CTRLINST.isMonitoringEnabled()) {
-			return null;
+			return false;
 		}
 		final String signature = SIGNATURE;
 		if (!CTRLINST.isProbeActivated(signature)) {
-			return null;
+			return false;
 		}
 		TraceMetadata trace = TRACEREGISTRY.getTrace();
 		final boolean newTrace = trace == null;
@@ -82,12 +82,16 @@ public final class MonitoredClassManualInstrumentation implements MonitoredClass
 		final long traceId = trace.getTraceId();
 		final String clazz = CLAZZ;
 		CTRLINST.newMonitoringRecord(new BeforeOperationEvent(TIME.getTime(), traceId, trace.getNextOrderId(), signature, clazz));
-		return trace;
+		return newTrace;
 	}
 
-	private final static void triggerAfter(final TraceMetadata trace) {
+	private final static void triggerAfter(final boolean newTrace) {
+		final TraceMetadata trace = TRACEREGISTRY.getTrace();
 		final String signature = SIGNATURE;
 		final String clazz = CLAZZ;
 		CTRLINST.newMonitoringRecord(new AfterOperationEvent(TIME.getTime(), trace.getTraceId(), trace.getNextOrderId(), signature, clazz));
+		if (newTrace) { // close the trace
+			TRACEREGISTRY.unregisterTrace();
+		}
 	}
 }
-- 
GitLab