This is an automated email from the ASF dual-hosted git repository. lhotari pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/pulsar.git
commit 86eb2a82f2b6913d584efc75f1dd747be4a1a73a Author: fengyubiao <[email protected]> AuthorDate: Tue Dec 31 15:32:13 2024 +0800 [fix][broker] Skip to persist cursor info if it failed by cursor closed (#23615) (cherry picked from commit 985060576bc9e290793c5815ff5f25f305c1515e) --- .../java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java index 655e8d0f2d8..e3e5fc27eea 100644 --- a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java +++ b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedCursorImpl.java @@ -3142,6 +3142,13 @@ public class ManagedCursorImpl implements ManagedCursor { mbean.addWriteCursorLedgerSize(data.length); callback.operationComplete(); } else { + if (state == State.Closed) { + // After closed the cursor, the in-progress persistence task will get a + // BKException.Code.LedgerClosedException. + callback.operationFailed(new CursorAlreadyClosedException(String.format("%s %s skipped this" + + " persistence, because the cursor already closed", ledger.getName(), name))); + return; + } log.warn("[{}] Error updating cursor {} position {} in meta-ledger {}: {}", ledger.getName(), name, position, lh1.getId(), BKException.getMessage(rc)); // If we've had a write error, the ledger will be automatically closed, we need to create a new one,
