>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]>