This is an automated email from the ASF dual-hosted git repository.
yubiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 985060576bc [fix][broker] Skip to persist cursor info if it failed by
cursor closed (#23615)
985060576bc is described below
commit 985060576bc9e290793c5815ff5f25f305c1515e
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)
---
.../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 0cd9fc0d54c..934bfba4b0d 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
@@ -3254,6 +3254,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,