Skip to content

Commit be91670

Browse files
committed
Return separate method fro changing state to deleting
1 parent f760747 commit be91670

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3622,15 +3622,9 @@ void asyncDeleteCursorLedger() {
36223622
}
36233623

36243624
private void asyncDeleteCursorLedger(int retry) {
3625-
State beforeChangingState = STATE_UPDATER.getAndUpdate(this, current -> {
3626-
// don't change the state if it's already deleting or deleted
3627-
if (current.isDeletingOrDeleted()) {
3628-
return current;
3629-
}
3630-
return State.Deleting;
3631-
});
3632-
if (beforeChangingState.isDeletingOrDeleted()) {
3633-
log.warn("[{}-{}] Cursor ledger is already deleting or deleted. state={}", ledger.getName(), name,
3625+
State beforeChangingState = changeStateToDeletingIfNotDeleted();
3626+
if (beforeChangingState == State.Deleted) {
3627+
log.warn("[{}-{}] Cursor ledger is already deleted. state={}", ledger.getName(), name,
36343628
beforeChangingState);
36353629
return;
36363630
}
@@ -3670,6 +3664,20 @@ private void asyncDeleteCursorLedger(int retry) {
36703664
}, null);
36713665
}
36723666

3667+
/**
3668+
* Change the state to {@link State#Deleting} if the current state is not {@link State#Deleted}.
3669+
* @return The state before changing.
3670+
*/
3671+
State changeStateToDeletingIfNotDeleted() {
3672+
return STATE_UPDATER.getAndUpdate(this, current -> {
3673+
// don't change the state if it's already deleted
3674+
if (current == State.Deleted) {
3675+
return current;
3676+
}
3677+
return State.Deleting;
3678+
});
3679+
}
3680+
36733681
/**
36743682
* return BK error codes that are considered not likely to be recoverable.
36753683
*/

managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,10 +1078,9 @@ public synchronized void asyncDeleteCursor(final String consumerName, final Dele
10781078

10791079
// If the cursor is active, we need to deactivate it first
10801080
cursor.setInactive();
1081-
// Set the state to closing to avoid any new writes
1082-
ManagedCursorImpl.State previousState =
1083-
cursor.changeStateIfNotDeletingOrDeleted(ManagedCursorImpl.State.Deleting);
1084-
if (previousState.isDeletingOrDeleted()) {
1081+
// Set the state to deleting (which is a closed state) to avoid any new writes
1082+
ManagedCursorImpl.State beforeChangingState = cursor.changeStateToDeletingIfNotDeleted();
1083+
if (beforeChangingState.isDeletingOrDeleted()) {
10851084
log.warn("[{}] [{}] Cursor is already being deleted or has been deleted.", name, consumerName);
10861085
return;
10871086
}

0 commit comments

Comments
 (0)