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,

Reply via email to