>From Murtadha Hubail <[email protected]>:

Murtadha Hubail has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20416?usp=email )


Change subject: [NO ISSUE][STO] Ensure handle is reset on SweepContext close
......................................................................

[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
---
M 
hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/cache/unit/SweepableIndexUnit.java
M 
hyracks-fullstack/hyracks/hyracks-cloud/src/main/java/org/apache/hyracks/cloud/sweeper/SweepContext.java
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/disk/ISweepContext.java
3 files changed, 13 insertions(+), 5 deletions(-)



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

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 794cafc..5a96105 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 @@
     @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 86cac57..e934e15 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.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 @@
     }

     @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 c1204f5..5739783 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 @@
     /**
      * Close the opened file
      */
-    void close() throws HyracksDataException;
+    void close();

     /**
      * Pin a page

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

Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: ionic
Gerrit-Change-Id: I40629f07b6483240c6c51734cf33888565092fcb
Gerrit-Change-Number: 20416
Gerrit-PatchSet: 1
Gerrit-Owner: Murtadha Hubail <[email protected]>

Reply via email to