diff --git a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java index 0f56a6e3a7f592e9b7d7ee5d4a19ebd3491beeb3..9513a2fe36292506668815a645c5f71218110b73 100644 --- a/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java +++ b/src/explorviz/live_trace_processing/filter/reduction/TracesSummarizationFilter.java @@ -3,6 +3,7 @@ package explorviz.live_trace_processing.filter.reduction; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.TreeMap; import explorviz.live_trace_processing.Constants; @@ -77,7 +78,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,15 +90,21 @@ 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 TracesSummarizationBuffer traceBuffer : trace2buffer.values()) { - if (traceBuffer.getBufferCreatedTimestamp() <= bufferTimeout) { - final Trace aggregatedTrace = traceBuffer.getAggregatedTrace(); + for (final Entry<Trace, TracesSummarizationBuffer> traceBufferEntrySet : trace2buffer + .entrySet()) { + + if (traceBufferEntrySet.getValue().getBufferCreatedTimestamp() <= bufferTimeout) { + final Trace aggregatedTrace = traceBufferEntrySet.getValue().getAggregatedTrace(); + deliver(aggregatedTrace); - toRemove.add(aggregatedTrace); + toRemove.add(traceBufferEntrySet.getKey()); } + } - for (final Trace traceEventRecords : toRemove) { - trace2buffer.remove(traceEventRecords); + for (final Trace trace : toRemove) { + if (trace2buffer.remove(trace) == null) { + System.out.println("no trace found :("); + } } }