abdullah alamoudi has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/2548
Change subject: [NO ISSUE][STO] Fix blocking IO callback
......................................................................
[NO ISSUE][STO] Fix blocking IO callback
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
-Blocking IO callback used to wait for any notification on the
callback before returning. The behaviour was fixed to only return
if the completion flag was set on afterFinalize.
Change-Id: I4bdc4c16a9c126d311378e56651632bbb4a50864
---
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
M
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
2 files changed, 10 insertions(+), 7 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/48/2548/1
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
index 042720c..a8ee286 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/BlockingIOOperationCallbackWrapper.java
@@ -34,7 +34,7 @@
}
public synchronized void waitForIO() throws InterruptedException {
- if (!notified) {
+ while (!notified) {
wait();
}
notified = false;
diff --git
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
index eed8f6e..f7af650 100644
---
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
+++
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
@@ -300,8 +300,9 @@
if (!inactiveDiskComponents.isEmpty()) {
for (ILSMDiskComponent inactiveComp :
inactiveDiskComponents) {
if (inactiveComp.getFileReferenceCount() == 1) {
- inactiveDiskComponentsToBeDeleted =
inactiveDiskComponentsToBeDeleted == null
- ? new LinkedList<>() :
inactiveDiskComponentsToBeDeleted;
+ inactiveDiskComponentsToBeDeleted =
+ inactiveDiskComponentsToBeDeleted ==
null ? new LinkedList<>()
+ :
inactiveDiskComponentsToBeDeleted;
inactiveDiskComponentsToBeDeleted.add(inactiveComp);
}
}
@@ -871,10 +872,12 @@
scheduleMerge(ctx, ioCallback);
}
IOOperationUtils.waitForIoOperation(ioCallback);
- // ensure that merge has succeeded
- for (ILSMDiskComponent component : toBeDeleted) {
- if (lsmIndex.getDiskComponents().contains(component)) {
- throw
HyracksDataException.create(ErrorCode.A_MERGE_OPERATION_HAS_FAILED);
+ synchronized (opTracker) {
+ // ensure that merge has succeeded
+ for (ILSMDiskComponent component : toBeDeleted) {
+ if (lsmIndex.getDiskComponents().contains(component)) {
+ throw
HyracksDataException.create(ErrorCode.A_MERGE_OPERATION_HAS_FAILED);
+ }
}
}
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/2548
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I4bdc4c16a9c126d311378e56651632bbb4a50864
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: release-0.9.4-pre-rc
Gerrit-Owner: abdullah alamoudi <[email protected]>