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

penghui 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 dcf01e9  Fix getInternalStats occasional lack of LeaderInfo (#13656)
dcf01e9 is described below

commit dcf01e910a4f8d30cd86ab95ab800952af92692a
Author: 包子 <wudixiaolong...@gmail.com>
AuthorDate: Thu Jan 13 00:27:33 2022 +0800

    Fix getInternalStats occasional lack of LeaderInfo (#13656)
    
    ### Motivation
    
    #11704
    
    AdminApiTest is flaky. The testGetPartitionedStatsInternal test method 
fails sporadically.
    
    The root cause it that `stateFuture` is returned, but 
`availableBookiesFuture` is not accomplished, so we need ensure that `futures` 
is all completed before `stateFuture.complete`.
    
    
https://github.com/apache/pulsar/blob/5faae1c4e683f4796ad34c1c612de0bcfe754d2a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java#L2176-L2178
---
 .../org/apache/pulsar/broker/service/persistent/PersistentTopic.java | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
index 5c6f99a..990f2fc 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
@@ -2023,9 +2023,10 @@ public class PersistentTopic extends AbstractTopic 
implements Topic, AddEntryCal
         stats.state = ml.getState().toString();
 
         stats.ledgers = Lists.newArrayList();
-        List<CompletableFuture<String>> futures = includeLedgerMetadata ? 
Lists.newArrayList() : null;
+        List<CompletableFuture<String>> futures = Lists.newArrayList();
         CompletableFuture<Set<String>> availableBookiesFuture =
                 
brokerService.pulsar().getPulsarResources().getBookieResources().listAvailableBookiesAsync();
+        futures.add(availableBookiesFuture.handle((strings, throwable) -> 
null));
         availableBookiesFuture.whenComplete((bookies, e) -> {
             if (e != null) {
                 log.error("[{}] Failed to fetch available bookies.", topic, e);
@@ -2038,7 +2039,7 @@ public class PersistentTopic extends AbstractTopic 
implements Topic, AddEntryCal
                     info.size = li.getSize();
                     info.offloaded = li.hasOffloadContext() && 
li.getOffloadContext().getComplete();
                     stats.ledgers.add(info);
-                    if (futures != null) {
+                    if (includeLedgerMetadata) {
                         
futures.add(ml.getLedgerMetadata(li.getLedgerId()).handle((lMetadata, ex) -> {
                             if (ex == null) {
                                 info.metadata = lMetadata;

Reply via email to