Skip to content
Browse files
[NO ISSUE][STO] Make IO operation completed state volatile
- user model changes: no
- storage format changes: no
- interface changes: no


- 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-by: Ali Alsuliman <>
Integration-Tests: Jenkins <>
Tested-by: Jenkins <>
  • 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() {

public synchronized boolean isCompleted() {
public boolean isCompleted() {
return completed;

0 comments on commit a808320

Please sign in to comment.