abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2643

Change subject: [NO ISSUE][STO] Fix concurrnecy issue in merge operations
......................................................................

[NO ISSUE][STO] Fix concurrnecy issue in merge operations

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Synchronize on opTracker when entering components for merge
  operations.

Change-Id: Ic612afe7bd250dea1a75d6121af437a201636381
---
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMHarness.java
1 file changed, 20 insertions(+), 11 deletions(-)


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

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 2a3e983..f8b45d0 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
@@ -566,18 +566,27 @@
         if (LOGGER.isInfoEnabled()) {
             LOGGER.info("Started a merge operation for index: {}", lsmIndex);
         }
-        enterComponents(operation.getAccessor().getOpContext(), 
LSMOperationType.MERGE);
-        try {
-            doIo(operation);
-        } finally {
-            exitComponents(operation.getAccessor().getOpContext(), 
LSMOperationType.MERGE, operation.getNewComponent(),
-                    operation.getStatus() == LSMIOOperationStatus.FAILURE);
-            opTracker.completeOperation(lsmIndex, LSMOperationType.MERGE,
-                    
operation.getAccessor().getOpContext().getSearchOperationCallback(),
-                    
operation.getAccessor().getOpContext().getModificationCallback());
+        boolean entered;
+        synchronized (opTracker) {
+            entered = enterComponents(operation.getAccessor().getOpContext(), 
LSMOperationType.MERGE);
         }
-        if (LOGGER.isInfoEnabled()) {
-            LOGGER.info("Finished the merge operation for index: {}. Result: 
", lsmIndex, operation.getStatus());
+        if (entered) {
+            try {
+                doIo(operation);
+            } finally {
+                exitComponents(operation.getAccessor().getOpContext(), 
LSMOperationType.MERGE,
+                        operation.getNewComponent(), operation.getStatus() == 
LSMIOOperationStatus.FAILURE);
+                opTracker.completeOperation(lsmIndex, LSMOperationType.MERGE,
+                        
operation.getAccessor().getOpContext().getSearchOperationCallback(),
+                        
operation.getAccessor().getOpContext().getModificationCallback());
+            }
+            if (LOGGER.isInfoEnabled()) {
+                LOGGER.info("Finished the merge operation for index: {}. 
Result: {}", lsmIndex, operation.getStatus());
+            }
+        } else {
+            if (LOGGER.isWarnEnabled()) {
+                LOGGER.warn("The merge operation failed to enter disk 
components for index: {}", lsmIndex);
+            }
         }
     }
 

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2643
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic612afe7bd250dea1a75d6121af437a201636381
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to