This is an automated email from the ASF dual-hosted git repository.

imaxon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit d467bc17fdcd35efeae360ced3a56946d19db74b
Author: Murtadha Hubail <[email protected]>
AuthorDate: Fri Sep 26 19:23:00 2025 +0300

    [NO ISSUE][STO] Ensure handle is reset on SweepContext close
    
    - user model changes: no
    - storage format changes: no
    - interface changes: yes
    
    Details:
    
    - In case of any exception during SweepContext close, ensure that the
      file handle is reset since this context is reused on all indexes.
      Such failures during close can happen if a file is deleted while
      after the handle has been initialized.
    - Fix the dropped index flag in SweepableIndexUnit.
    
    Ext-ref: MB-68731
    Change-Id: I40629f07b6483240c6c51734cf33888565092fcb
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20416
    Tested-by: Ian Maxon <[email protected]>
    Integration-Tests: Ian Maxon <[email protected]>
    Reviewed-by: Ritik Raj <[email protected]>
    Reviewed-by: Murtadha Hubail <[email protected]>
---
 .../hyracks/cloud/cache/unit/SweepableIndexUnit.java       |  2 +-
 .../org/apache/hyracks/cloud/sweeper/SweepContext.java     | 14 +++++++++++---
 .../apache/hyracks/storage/common/disk/ISweepContext.java  |  2 +-
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/cache/unit/SweepableIndexUnit.java
 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/cache/unit/SweepableIndexUnit.java
index 794cafc6ff..5a96105807 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/cache/unit/SweepableIndexUnit.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/cache/unit/SweepableIndexUnit.java
@@ -39,7 +39,7 @@ public final class SweepableIndexUnit extends 
AbstractIndexUnit {
     @Override
     public void drop() {
         // Signal that the index is being dropped so a sweeper thread does not 
sweep this index or stops sweeping
-        dropped.set(false);
+        dropped.set(true);
         // Wait for the sweep operation (if running) before allowing the index 
to be dropped
         waitForSweep();
     }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
index 86cac57dbf..e934e15a54 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
@@ -30,8 +30,11 @@ import 
org.apache.hyracks.storage.common.buffercache.ICachedPage;
 import 
org.apache.hyracks.storage.common.buffercache.context.IBufferCacheReadContext;
 import org.apache.hyracks.storage.common.disk.ISweepContext;
 import org.apache.hyracks.storage.common.file.BufferedFileHandle;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public final class SweepContext implements ISweepContext {
+    private static final Logger LOGGER = LogManager.getLogger();
     private final ICloudIOManager cloudIOManager;
     private final BufferCache bufferCache;
     private final Map<Integer, BufferedFileHandle> fileInfoMap;
@@ -57,10 +60,15 @@ public final class SweepContext implements ISweepContext {
     }
 
     @Override
-    public void close() throws HyracksDataException {
+    public void close() {
         if (handle != null) {
-            bufferCache.closeFile(handle.getFileId());
-            handle = null;
+            try {
+                bufferCache.closeFile(handle.getFileId());
+            } catch (Exception e) {
+                LOGGER.warn("failed to close file {}", handle.getFileId(), e);
+            } finally {
+                handle = null;
+            }
         }
     }
 
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
index c1204f5441..57397831c7 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
@@ -38,7 +38,7 @@ public interface ISweepContext {
     /**
      * Close the opened file
      */
-    void close() throws HyracksDataException;
+    void close();
 
     /**
      * Pin a page

Reply via email to