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

Reply via email to