commit | a8083203047003d706d482e4e91685133c44b891 | [log] [tgz] |
---|---|---|
author | Murtadha Hubail <murtadha.hubail@couchbase.com> | Fri Mar 11 20:45:35 2022 +0300 |
committer | Murtadha Hubail <mhubail@apache.org> | Fri Mar 11 21:42:22 2022 +0000 |
tree | 244773d7ff1423b9ff70fb2ea2c5221694b125c2 | |
parent | b50d4add90acb7e8cf13e7b4168f92bcf35348dc [diff] |
[NO ISSUE][STO] Make IO operation completed state volatile - user model changes: no - storage format changes: no - interface changes: no Details: - To avoid a deadlock between checking an IO operation completed state and scheduling another flush operation using the same IO scheduler, make the IO operation state volatile rather synchronizing on the operation. Change-Id: Ibef0fe3dc52a5a6b36cc29bbac0fb38936944cee Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/15663 Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com> Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu> Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractIoOperation.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractIoOperation.java index 8317ca7..a5f70d9 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractIoOperation.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AbstractIoOperation.java
@@ -44,7 +44,7 @@ private volatile Throwable failure; private LSMIOOperationStatus status = LSMIOOperationStatus.SUCCESS; private ILSMDiskComponent newComponent; - private boolean completed = false; + private volatile boolean completed = false; private List<IoOperationCompleteListener> completeListeners; private final AtomicBoolean isActive = new AtomicBoolean(true); @@ -203,7 +203,7 @@ } @Override - public synchronized boolean isCompleted() { + public boolean isCompleted() { return completed; }