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

yong pushed a commit to branch branch-4.15
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git

commit d0f88fde9045a3d9dc904c06fc225e7286cdb72e
Author: Yan Zhao <[email protected]>
AuthorDate: Tue Jul 26 13:28:34 2022 +0800

    fix underReplicatedLedgerTotalSize calculate problem. (#3337)
    
    Descriptions of the changes in this PR:
    ```
      LongAdder underReplicatedSize = new LongAdder();
            FutureUtils.processList(
                    Lists.newArrayList(ledgers),
                    ledgerId ->
                        
ledgerManager.readLedgerMetadata(ledgerId).whenComplete((metadata, exception) 
-> {
                            if (exception == null) {
                                
underReplicatedSize.add(metadata.getValue().getLength());
                            }
                        }), null);
            
underReplicatedLedgerTotalSize.registerSuccessfulValue(underReplicatedSize.longValue());
    ```
    `FutureUtils.processList`  is async process, should record 
`underReplicatedLedgerTotalSize` when it completed.
    
    (cherry picked from commit ded05aa2218f1e98c650070e9d0152213c4d09fe)
---
 .../src/main/java/org/apache/bookkeeper/replication/Auditor.java     | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
index bad82eb17d..8404e97e21 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/replication/Auditor.java
@@ -1214,8 +1214,9 @@ public class Auditor implements AutoCloseable {
                         if (exception == null) {
                             
underReplicatedSize.add(metadata.getValue().getLength());
                         }
-                    }), null);
-        
underReplicatedLedgerTotalSize.registerSuccessfulValue(underReplicatedSize.longValue());
+                    }), null).whenComplete((res, e) -> {
+            
underReplicatedLedgerTotalSize.registerSuccessfulValue(underReplicatedSize.longValue());
+        });
 
         return FutureUtils.processList(
             Lists.newArrayList(ledgers),

Reply via email to