You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2024/06/20 17:05:28 UTC

Change in asterixdb[master]: [ASTERIXDB-3441][STO] Fix race condition in CloudColumnIndexDiskCache...

From Wail Alkowaileet <wa...@gmail.com>:

Wail Alkowaileet has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18393 )


Change subject: [ASTERIXDB-3441][STO] Fix race condition in CloudColumnIndexDiskCacheManager
......................................................................

[ASTERIXDB-3441][STO] Fix race condition in CloudColumnIndexDiskCacheManager

- user model changes: no
- storage format changes: no
- interface changes: no

Details
setIndexedColumns() and getIndexedColumnsCopy() could
interfer with each other. They both must be a sync. methods.

Change-Id: I52aa2f9c503a02bb177a2e163bdb0531fec9c70f
---
M hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/sweep/ColumnSweepPlanner.java
1 file changed, 27 insertions(+), 9 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/93/18393/1

diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/sweep/ColumnSweepPlanner.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/sweep/ColumnSweepPlanner.java
index 9d52603..e67ed00 100644
--- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/sweep/ColumnSweepPlanner.java
+++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/sweep/ColumnSweepPlanner.java
@@ -19,6 +19,12 @@
 package org.apache.hyracks.storage.am.lsm.btree.column.cloud.sweep;
 
 import static org.apache.hyracks.storage.am.lsm.common.util.LSMComponentIdUtils.isMergedComponent;
+import it.unimi.dsi.fastutil.ints.IntArrays;
+import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
+import it.unimi.dsi.fastutil.ints.IntSet;
+import it.unimi.dsi.fastutil.longs.LongArrays;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 import java.util.BitSet;
 import java.util.List;
@@ -34,13 +40,6 @@
 import org.apache.hyracks.storage.common.buffercache.IBufferCache;
 import org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import it.unimi.dsi.fastutil.ints.IntArrays;
-import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
-import it.unimi.dsi.fastutil.ints.IntSet;
-import it.unimi.dsi.fastutil.longs.LongArrays;
 
 public final class ColumnSweepPlanner {
     private static final Logger LOGGER = LogManager.getLogger();
@@ -94,9 +93,11 @@
         resizeStatsArrays(numberOfColumns);
         setInitialSizes(diskComponents, sweepProjector, bufferCache);
         active.set(true);
+        // Initialize access time to the time of activating the index
+        lastAccess = System.currentTimeMillis();
     }
 
-    public void setIndexedColumns(IColumnProjectionInfo projectionInfo) {
+    public synchronized void setIndexedColumns(IColumnProjectionInfo projectionInfo) {
         indexedColumns.clear();
         for (int i = 0; i < projectionInfo.getNumberOfProjectedColumns(); i++) {
             int columnIndex = projectionInfo.getColumnIndex(i);
@@ -104,7 +105,7 @@
         }
     }
 
-    public IntSet getIndexedColumnsCopy() {
+    public synchronized IntSet getIndexedColumnsCopy() {
         return new IntOpenHashSet(indexedColumns);
     }
 

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18393
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I52aa2f9c503a02bb177a2e163bdb0531fec9c70f
Gerrit-Change-Number: 18393
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet <wa...@gmail.com>
Gerrit-MessageType: newchange