diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java index df7c4411b24881b3358b7e4b8be0c1c92048432a..4a71766f3b2d3308f14ca7391326aba0dfd51d76 100644 --- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java +++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionBuffer.java @@ -79,6 +79,10 @@ class TraceReconstructionBuffer { } public final Trace toTrace(final boolean valid) { + if (events.isEmpty()) { + return null; + } + final Stack<AbstractBeforeEventRecord> stack = new Stack<AbstractBeforeEventRecord>(); for (final AbstractEventRecord event : events) { if (event instanceof AbstractBeforeEventRecord) { diff --git a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java index 61fa7f05a0764f82dec3e1ed72ce1fc50b644343..d670c39f2424db3e2046925122251eea3fd2e832 100644 --- a/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java +++ b/src/explorviz/live_trace_processing/filter/reconstruction/TraceReconstructionFilter.java @@ -44,7 +44,10 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I traceId2trace.remove(traceId); traceBuffer.clear(); freeBufferCache.addLast(traceBuffer); - deliver(traceBuffer.toTrace(true)); + final Trace trace = traceBuffer.toTrace(true); + if (trace != null) { + deliver(trace); + } } } else if (record instanceof Trace) { final Trace trace = (Trace) record; @@ -90,7 +93,10 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I traceBuffer.updateLastBufferInsert(); if ((timestamp - traceBuffer.getLastBufferInsert()) <= traceTimeout) { - deliver(traceBuffer.toTrace(false)); + final Trace trace = traceBuffer.toTrace(false); + if (trace != null) { + deliver(trace); + } traceIdsToRemove.add(entry.getKey()); traceBuffer.clear(); freeBufferCache.addLast(traceBuffer); @@ -105,7 +111,10 @@ public final class TraceReconstructionFilter extends AbstractFilter implements I private void terminate() { for (final TraceReconstructionBuffer entry : traceId2trace.values()) { - deliver(entry.toTrace(false)); + final Trace trace = entry.toTrace(false); + if (trace != null) { + deliver(trace); + } } traceId2trace.clear(); }