>From Murtadha Hubail <[email protected]>: Murtadha Hubail has submitted this change. ( 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 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]> --- 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(-) Approvals: Ian Maxon: Verified; Verified Murtadha Hubail: Looks good to me, but someone else must approve Ritik Raj: Looks good to me, approved Anon. E. Moose #1000171: 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: merged Gerrit-Project: asterixdb Gerrit-Branch: ionic Gerrit-Change-Id: I40629f07b6483240c6c51734cf33888565092fcb Gerrit-Change-Number: 20416 Gerrit-PatchSet: 2 Gerrit-Owner: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Ian Maxon <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Ritik Raj <[email protected]>
