From d948686fc3c999fc877c747180d64eeb7a338694 Mon Sep 17 00:00:00 2001 From: Matthew Khouzam Date: Tue, 13 Oct 2015 20:12:10 -0400 Subject: [PATCH] analysis: Fix TreeMapStore's serialization Change-Id: Ia6c3299d8e0e940cae52118c14ca04c16aedd049 Signed-off-by: Matthew Khouzam Reviewed-on: https://git.eclipse.org/r/58118 Reviewed-by: Patrick Tasse Tested-by: Patrick Tasse Reviewed-by: Marc-Andre Laperle Reviewed-by: Hudson CI --- .../os/linux/core/latency/LatencyAnalysis.java | 17 +++++++++++++---- .../os/linux/core/latency/SystemCall.java | 5 +---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/LatencyAnalysis.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/LatencyAnalysis.java index 2ee2ab25c0..26cd42f5ff 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/LatencyAnalysis.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/LatencyAnalysis.java @@ -87,9 +87,18 @@ public class LatencyAnalysis extends TmfAbstractAnalysisModule { if (Files.exists(file)) { /* Attempt to read the existing file */ try (ObjectInputStream ois = new ObjectInputStream(Files.newInputStream(file))) { - @SuppressWarnings("unchecked") - ISegmentStore syscalls = (ISegmentStore) ois.readObject(); - fSystemCalls = syscalls; + Object[] syscallsArray = (Object[]) ois.readObject(); + final ISegmentStore systemCalls = new TreeMapStore<>(); + for (Object element : syscallsArray) { + if (element instanceof ISegment) { + ISegment segment = (ISegment) element; + systemCalls.add(segment); + } + } + fSystemCalls = systemCalls; + for (LatencyAnalysisListener listener : fListeners) { + listener.onComplete(this, systemCalls); + } return true; } catch (IOException | ClassNotFoundException | ClassCastException e) { /* @@ -131,7 +140,7 @@ public class LatencyAnalysis extends TmfAbstractAnalysisModule { /* Serialize the collections to disk for future usage */ try (ObjectOutputStream oos = new ObjectOutputStream(Files.newOutputStream(file))) { - oos.writeObject(syscalls); + oos.writeObject(syscalls.toArray()); } catch (IOException e) { /* Didn't work, oh well. We will just re-read the trace next time */ } diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/SystemCall.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/SystemCall.java index 1fbbbdd313..b57fa1855a 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/SystemCall.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/latency/SystemCall.java @@ -71,7 +71,6 @@ public class SystemCall implements ISegment { private final InitialInfo fInfo; private final long fEndTime; private final int fRet; - private final transient long fDuration; /** * @param info @@ -88,7 +87,6 @@ public class SystemCall implements ISegment { fInfo = info; fEndTime = endTime; fRet = ret; - fDuration = fEndTime - fInfo.fStartTime; } @Override @@ -103,7 +101,7 @@ public class SystemCall implements ISegment { @Override public long getLength() { - return fDuration; + return fEndTime - fInfo.fStartTime; } /** @@ -133,7 +131,6 @@ public class SystemCall implements ISegment { return fRet; } - @Override public int compareTo(@Nullable ISegment o) { if (o == null) { -- 2.39.5