commit | 983497afc21f832ad638dfc6c4d7b13f7829d780 | [log] [tgz] |
---|---|---|
author | Wail Alkowaileet <wael.y.k@gmail.com> | Thu Jun 20 10:13:28 2024 -0700 |
committer | Wail Alkowaileet <wael.y.k@gmail.com> | Thu Jun 20 21:03:52 2024 +0000 |
tree | 89bddf013a3f03e814ab2dcd439b28716d05bef9 | |
parent | 057d193e10ddfac751e8c082ab56dd5746c3678c [diff] |
[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 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18393 Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu> Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu> Reviewed-by: Murtadha Hubail <mhubail@apache.org>
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..d12f649 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
@@ -94,9 +94,11 @@ resizeStatsArrays(numberOfColumns); setInitialSizes(diskComponents, sweepProjector, bufferCache); active.set(true); + // Initialize access time to the time of activating the index + lastAccess = clock.getCurrentTime(); } - 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 +106,7 @@ } } - public IntSet getIndexedColumnsCopy() { + public synchronized IntSet getIndexedColumnsCopy() { return new IntOpenHashSet(indexedColumns); }