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