From 6d9624157ca5f2355363fcbecccf1fd370305728 Mon Sep 17 00:00:00 2001 From: Florian Fittkau <ffi@informatik.uni-kiel.de> Date: Thu, 5 Feb 2015 19:41:14 +0100 Subject: [PATCH] fixed summarization bug --- .../reduction/TracesSummarizationFilter.java | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java index 9513a2f..fc24b69 100644 --- a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java +++ b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java @@ -1,7 +1,6 @@ package explorviz.live_trace_processing.filter.reduction; -import java.util.ArrayList; -import java.util.List; +import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; @@ -78,7 +77,7 @@ public class TracesSummarizationFilter extends AbstractFilter implements ITraceR final AbstractBeforeOperationEventRecord abstractBeforeOperationEventRecord = (AbstractBeforeOperationEventRecord) abstractBeforeEventRecord; abstractBeforeOperationEventRecord.getRuntimeStatisticInformation() - .makeAccumulator(abstractBeforeOperationEventRecord.getObjectId()); + .makeAccumulator(abstractBeforeOperationEventRecord.getObjectId()); } else { abstractBeforeEventRecord.getRuntimeStatisticInformation().makeAccumulator(0); @@ -89,21 +88,17 @@ public class TracesSummarizationFilter extends AbstractFilter implements ITraceR private void processTimeoutQueue(final long timestamp) { final long bufferTimeout = timestamp - maxCollectionDuration; - final List<Trace> toRemove = new ArrayList<Trace>(); - for (final Entry<Trace, TracesSummarizationBuffer> traceBufferEntrySet : trace2buffer - .entrySet()) { + final Iterator<Entry<Trace, TracesSummarizationBuffer>> iter = trace2buffer.entrySet() + .iterator(); - if (traceBufferEntrySet.getValue().getBufferCreatedTimestamp() <= bufferTimeout) { - final Trace aggregatedTrace = traceBufferEntrySet.getValue().getAggregatedTrace(); + while (iter.hasNext()) { + final Entry<Trace, TracesSummarizationBuffer> traceBufferEntry = iter.next(); - deliver(aggregatedTrace); - toRemove.add(traceBufferEntrySet.getKey()); - } + if (traceBufferEntry.getValue().getBufferCreatedTimestamp() <= bufferTimeout) { + final Trace aggregatedTrace = traceBufferEntry.getValue().getAggregatedTrace(); - } - for (final Trace trace : toRemove) { - if (trace2buffer.remove(trace) == null) { - System.out.println("no trace found :("); + deliver(aggregatedTrace); + iter.remove(); } } } -- GitLab