From: Matthew Khouzam Date: Thu, 6 Oct 2016 21:04:09 +0000 (-0400) Subject: segStore: guard size() in segment stores X-Git-Url: http://git.efficios.com/?p=deliverable%2Ftracecompass.git;a=commitdiff_plain;h=524fb56d7e2069046a94ed41c1d125f9c2e5e488 segStore: guard size() in segment stores This prevents a race condition invalidating the size data. Change-Id: I0b5e5c9573dc2789f92d5b437fe23c3df23b9f43 Signed-off-by: Matthew Khouzam Reviewed-on: https://git.eclipse.org/r/82324 Reviewed-by: Genevieve Bastien Reviewed-by: Hudson CI --- diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java index 6af292cc97..8f166f4075 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java @@ -126,7 +126,12 @@ public class ArrayListStore<@NonNull E extends ISegment> implements ISegmentStor @Override public int size() { - return fStore.size(); + fLock.readLock().lock(); + try { + return fStore.size(); + } finally { + fLock.readLock().unlock(); + } } @Override diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java index d6e6ea3969..1d6de72ec9 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java @@ -150,7 +150,12 @@ public class LazyArrayListStore<@NonNull E extends ISegment> implements ISegment @Override public int size() { - return fStore.size(); + fLock.lock(); + try { + return fStore.size(); + } finally { + fLock.unlock(); + } } @Override