Skip to content
Snippets Groups Projects
Commit c3bab1dd authored by Christian Wulf's avatar Christian Wulf
Browse files

modularized code

parent b7442254
No related branches found
No related tags found
No related merge requests found
...@@ -20,10 +20,6 @@ import java.util.Map; ...@@ -20,10 +20,6 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import kieker.analysis.plugin.filter.flow.TraceEventRecords;
import kieker.common.record.flow.IFlowRecord;
import kieker.common.record.flow.trace.AbstractTraceEvent;
import kieker.common.record.flow.trace.TraceMetadata;
import teetime.framework.core.AbstractFilter; import teetime.framework.core.AbstractFilter;
import teetime.framework.core.Context; import teetime.framework.core.Context;
import teetime.framework.core.IInputPort; import teetime.framework.core.IInputPort;
...@@ -31,9 +27,14 @@ import teetime.framework.core.IOutputPort; ...@@ -31,9 +27,14 @@ import teetime.framework.core.IOutputPort;
import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault; import teetime.util.concurrent.hashmap.ConcurrentHashMapWithDefault;
import teetime.util.concurrent.hashmap.TraceBuffer; import teetime.util.concurrent.hashmap.TraceBuffer;
import kieker.analysis.plugin.filter.flow.TraceEventRecords;
import kieker.common.record.flow.IFlowRecord;
import kieker.common.record.flow.trace.AbstractTraceEvent;
import kieker.common.record.flow.trace.TraceMetadata;
/** /**
* @author Christian Wulf * @author Christian Wulf
* *
* @since 1.10 * @since 1.10
*/ */
public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructionFilter> { public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructionFilter> {
...@@ -50,7 +51,7 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio ...@@ -50,7 +51,7 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio
private boolean timeout; private boolean timeout;
private long maxEncounteredLoggingTimestamp = -1; private long maxEncounteredLoggingTimestamp = -1;
private Map<Long, TraceBuffer> traceId2trace = new ConcurrentHashMapWithDefault<Long, TraceBuffer>(new TraceBuffer()); private static final Map<Long, TraceBuffer> traceId2trace = new ConcurrentHashMapWithDefault<Long, TraceBuffer>(new TraceBuffer());
@Override @Override
protected boolean execute(final Context<TraceReconstructionFilter> context) { protected boolean execute(final Context<TraceReconstructionFilter> context) {
...@@ -96,10 +97,10 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio ...@@ -96,10 +97,10 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio
} }
private void putIfFinished(final Long traceId, final Context<TraceReconstructionFilter> context) { private void putIfFinished(final Long traceId, final Context<TraceReconstructionFilter> context) {
final TraceBuffer traceBuffer = this.traceId2trace.get(traceId); final TraceBuffer traceBuffer = TraceReconstructionFilter.traceId2trace.get(traceId);
if (traceBuffer.isFinished()) { if (traceBuffer.isFinished()) {
synchronized (this) { // has to be synchronized because of timeout cleanup synchronized (this) { // has to be synchronized because of timeout cleanup
this.traceId2trace.remove(traceId); TraceReconstructionFilter.traceId2trace.remove(traceId);
} }
this.put(traceBuffer, context); this.put(traceBuffer, context);
} }
...@@ -109,12 +110,12 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio ...@@ -109,12 +110,12 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio
Long traceId = null; Long traceId = null;
if (record instanceof TraceMetadata) { if (record instanceof TraceMetadata) {
traceId = ((TraceMetadata) record).getTraceId(); traceId = ((TraceMetadata) record).getTraceId();
final TraceBuffer traceBuffer = this.traceId2trace.get(traceId); final TraceBuffer traceBuffer = TraceReconstructionFilter.traceId2trace.get(traceId);
traceBuffer.setTrace((TraceMetadata) record); traceBuffer.setTrace((TraceMetadata) record);
} else if (record instanceof AbstractTraceEvent) { } else if (record instanceof AbstractTraceEvent) {
traceId = ((AbstractTraceEvent) record).getTraceId(); traceId = ((AbstractTraceEvent) record).getTraceId();
final TraceBuffer traceBuffer = this.traceId2trace.get(traceId); final TraceBuffer traceBuffer = TraceReconstructionFilter.traceId2trace.get(traceId);
traceBuffer.insertEvent((AbstractTraceEvent) record); traceBuffer.insertEvent((AbstractTraceEvent) record);
} }
...@@ -132,7 +133,7 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio ...@@ -132,7 +133,7 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio
final long duration = timestamp - this.maxTraceDuration; final long duration = timestamp - this.maxTraceDuration;
final long traceTimeout = timestamp - this.maxTraceTimeout; final long traceTimeout = timestamp - this.maxTraceTimeout;
for (final Iterator<Entry<Long, TraceBuffer>> iterator = this.traceId2trace.entrySet().iterator(); iterator.hasNext();) { for (final Iterator<Entry<Long, TraceBuffer>> iterator = TraceReconstructionFilter.traceId2trace.entrySet().iterator(); iterator.hasNext();) {
final TraceBuffer traceBuffer = iterator.next().getValue(); final TraceBuffer traceBuffer = iterator.next().getValue();
if ((traceBuffer.getMaxLoggingTimestamp() <= traceTimeout) // long time no see if ((traceBuffer.getMaxLoggingTimestamp() <= traceTimeout) // long time no see
|| (traceBuffer.getMinLoggingTimestamp() <= duration)) { // max duration is gone || (traceBuffer.getMinLoggingTimestamp() <= duration)) { // max duration is gone
...@@ -180,12 +181,12 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio ...@@ -180,12 +181,12 @@ public class TraceReconstructionFilter extends AbstractFilter<TraceReconstructio
this.maxEncounteredLoggingTimestamp = maxEncounteredLoggingTimestamp; this.maxEncounteredLoggingTimestamp = maxEncounteredLoggingTimestamp;
} }
public Map<Long, TraceBuffer> getTraceId2trace() { // public Map<Long, TraceBuffer> getTraceId2trace() {
return this.traceId2trace; // return TraceReconstructionFilter.traceId2trace;
} // }
//
public void setTraceId2trace(final Map<Long, TraceBuffer> traceId2trace) { // public void setTraceId2trace(final Map<Long, TraceBuffer> traceId2trace) {
this.traceId2trace = traceId2trace; // TraceReconstructionFilter.traceId2trace = traceId2trace;
} // }
} }
...@@ -89,7 +89,8 @@ public class KiekerHashMap { ...@@ -89,7 +89,8 @@ public class KiekerHashMap {
public final String get(final String value) { public final String get(final String value) {
final int hash = KiekerHashMap.hash(value); final int hash = KiekerHashMap.hash(value);
return this.segments[(hash >>> this.segmentShift) & this.segmentMask].get(value, hash); Segment segment = this.segments[(hash >>> this.segmentShift) & this.segmentMask];
return segment.get(value, hash);
} }
// ---------------- Inner Classes -------------- // ---------------- Inner Classes --------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment