segStore: guard size() in segment stores
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Thu, 6 Oct 2016 21:04:09 +0000 (17:04 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Thu, 6 Oct 2016 23:14:30 +0000 (19:14 -0400)
This prevents a race condition invalidating the size data.

Change-Id: I0b5e5c9573dc2789f92d5b437fe23c3df23b9f43
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/82324
Reviewed-by: Genevieve Bastien <gbastien+lttng@versatic.net>
Reviewed-by: Hudson CI
statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/ArrayListStore.java
statesystem/org.eclipse.tracecompass.segmentstore.core/src/org/eclipse/tracecompass/internal/segmentstore/core/arraylist/LazyArrayListStore.java

index 6af292cc97c5363b13aa641e0a830b8df332b704..8f166f4075fbf728751f43b74b2e4b56c0cc5544 100644 (file)
@@ -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
index d6e6ea3969a5f3aed678f4c1c0bbc30d5b788c8f..1d6de72ec9d4a3565bc696e3a6df83c8f231c9d2 100644 (file)
@@ -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
This page took 0.0383 seconds and 5 git commands to generate.