[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);
     }