This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit a8083203047003d706d482e4e91685133c44b891
Author: Murtadha Hubail <[email protected]>
AuthorDate: Fri Mar 11 20:45:35 2022 +0300

    [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 <[email protected]>
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
---
 .../hyracks/storage/am/lsm/common/impls/AbstractIoOperation.java      | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

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 @@ public abstract class AbstractIoOperation implements 
ILSMIOOperation {
     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 @@ public abstract class AbstractIoOperation implements 
ILSMIOOperation {
     }
 
     @Override
-    public synchronized boolean isCompleted() {
+    public boolean isCompleted() {
         return completed;
     }
 

Reply via email to