Skip to content

Commit

Permalink
Optimize code to make changes less
Browse files Browse the repository at this point in the history
  • Loading branch information
poorbarcode committed Jul 28, 2022
1 parent a08b237 commit 5d22abb
Showing 1 changed file with 10 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1868,16 +1868,9 @@ protected void internalAsyncMarkDelete(final PositionImpl newPosition, Map<Strin
return;

case NoLedger:
// We need to create a new ledger to write into
startCreatingNewMetadataLedger().whenComplete((ignore, ex) -> {
if (ex != null){
// Create ledger failure, execute "callback.fail".
mdEntry.callback.markDeleteFailed((ManagedLedgerException) ex, mdEntry.ctx);
} else {
// Create ledger and already set state to "Open" success, so goto the case: State.open.
internalAsyncMarkDelete(newPosition, properties, callback, ctx);
}
});
pendingMarkDeleteOps.add(mdEntry);
// We need to create a new ledger to write into.
startCreatingNewMetadataLedger();
break;
// fall through
case SwitchingLedger:
Expand Down Expand Up @@ -2548,21 +2541,21 @@ void setReadPosition(Position newReadPositionInt) {

// //////////////////////////////////////////////////

CompletableFuture<Void> startCreatingNewMetadataLedger() {
void startCreatingNewMetadataLedger() {
// Change the state so that new mark-delete ops will be queued and not immediately submitted
State oldState = STATE_UPDATER.getAndSet(this, State.SwitchingLedger);
if (oldState == State.SwitchingLedger) {
// Ignore double request
return;
}

} else if (PENDING_MARK_DELETED_SUBMITTED_COUNT_UPDATER.get(this) == 0) {
// Check if we can immediately switch to a new metadata ledger
return createNewMetadataLedger();
// Check if we can immediately switch to a new metadata ledger
if (PENDING_MARK_DELETED_SUBMITTED_COUNT_UPDATER.get(this) == 0) {
createNewMetadataLedger();
}
return CompletableFuture.completedFuture(null);
}

CompletableFuture<Void> createNewMetadataLedger() {
CompletableFuture<Void> completableFuture = new CompletableFuture();
void createNewMetadataLedger() {
createNewMetadataLedger(new VoidCallback() {
@Override
public void operationComplete() {
Expand All @@ -2573,7 +2566,6 @@ public void operationComplete() {
// Resume normal mark-delete operations
STATE_UPDATER.set(ManagedCursorImpl.this, State.Open);
}
completableFuture.complete(null);
}

@Override
Expand All @@ -2589,10 +2581,8 @@ public void operationFailed(ManagedLedgerException exception) {
// At this point we don't have a ledger ready
STATE_UPDATER.set(ManagedCursorImpl.this, State.NoLedger);
}
completableFuture.completeExceptionally(exception);
}
});
return completableFuture;
}

private void flushPendingMarkDeletes() {
Expand Down

0 comments on commit 5d22abb

Please sign in to comment.