This is an automated email from the ASF dual-hosted git repository.

technoboy pushed a commit to branch branch-2.11
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-2.11 by this push:
     new 0951a3b6a91 [fix] [ml] The atomicity of multiple fields of ml is 
broken (#19346)
0951a3b6a91 is described below

commit 0951a3b6a91be9aba75889fb3a3ad5285cebd16a
Author: fengyubiao <[email protected]>
AuthorDate: Sun Jan 29 23:09:44 2023 +0800

    [fix] [ml] The atomicity of multiple fields of ml is broken (#19346)
---
 .../apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java    | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git 
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
 
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
index 912908433cd..e9c421542b2 100644
--- 
a/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
+++ 
b/managed-ledger/src/main/java/org/apache/bookkeeper/mledger/impl/ManagedLedgerImpl.java
@@ -1504,16 +1504,16 @@ public class ManagedLedgerImpl implements 
ManagedLedger, CreateCallback {
                         log.debug("[{}] Updating of ledgers list after create 
complete. version={}", name, stat);
                     }
                     ledgersStat = stat;
-                    ledgers.put(lh.getId(), newLedger);
-                    currentLedger = lh;
-                    currentLedgerEntries = 0;
-                    currentLedgerSize = 0;
-                    metadataMutex.unlock();
-                    updateLedgersIdsComplete(stat);
                     synchronized (ManagedLedgerImpl.this) {
+                        ledgers.put(lh.getId(), newLedger);
+                        currentLedger = lh;
+                        currentLedgerEntries = 0;
+                        currentLedgerSize = 0;
+                        updateLedgersIdsComplete();
                         
mbean.addLedgerSwitchLatencySample(System.currentTimeMillis()
                                 - lastLedgerCreationInitiationTimestamp, 
TimeUnit.MILLISECONDS);
                     }
+                    metadataMutex.unlock();
 
                     // May need to update the cursor position
                     maybeUpdateCursorBeforeTrimmingConsumedLedger();

Reply via email to