Skip to content
Permalink
Browse files
[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>
  • Loading branch information
mhubail committed Mar 11, 2022
1 parent b50d4ad commit a8083203047003d706d482e4e91685133c44b891
Showing 1 changed file with 2 additions and 2 deletions.
@@ -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 boolean isActive() {
}

@Override
public synchronized boolean isCompleted() {
public boolean isCompleted() {
return completed;
}

0 comments on commit a808320

Please sign in to comment.