You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by zh...@apache.org on 2022/08/01 06:48:54 UTC

[pulsar] branch master updated: [fix][broker]fix the zero value as denominator cause ArithmeticException when selectBroker use LeastResourceUsageWithWeight (#16573)

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

zhangmingao 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 99fbe2226fe [fix][broker]fix the zero value as denominator cause ArithmeticException when selectBroker use LeastResourceUsageWithWeight (#16573)
99fbe2226fe is described below

commit 99fbe2226fe8ace44eea0899292833376d86fc20
Author: lixinyang <84...@users.noreply.github.com>
AuthorDate: Mon Aug 1 14:48:46 2022 +0800

    [fix][broker]fix the zero value as denominator cause ArithmeticException when selectBroker use LeastResourceUsageWithWeight (#16573)
    
    * fix the zero value as denominator cause ArithmeticException
    
    * fix the zero value as denominator cause ArithmeticException
    
    Co-authored-by: nicklixinyang <ni...@didiglobal.com>
---
 .../broker/loadbalance/impl/LeastResourceUsageWithWeight.java | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
index 721917cb73d..2e717500e64 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LeastResourceUsageWithWeight.java
@@ -125,6 +125,11 @@ public class LeastResourceUsageWithWeight implements ModularLoadManagerStrategy
     @Override
     public Optional<String> selectBroker(Set<String> candidates, BundleData bundleToAssign, LoadData loadData,
                                          ServiceConfiguration conf) {
+        if (candidates.isEmpty()) {
+            log.info("There are no available brokers as candidates at this point for bundle: {}", bundleToAssign);
+            return Optional.empty();
+        }
+
         bestBrokers.clear();
         // Maintain of list of all the best scoring brokers and then randomly
         // select one of them at the end.
@@ -151,12 +156,6 @@ public class LeastResourceUsageWithWeight implements ModularLoadManagerStrategy
             bestBrokers.addAll(candidates);
         }
 
-        if (bestBrokers.isEmpty()) {
-            // If still, it means there are no available brokers at this point.
-            log.error("There are no available brokers as candidates at this point for bundle: {}", bundleToAssign);
-            return Optional.empty();
-        }
-
         if (log.isDebugEnabled()) {
             log.debug("Selected {} best brokers: {} from candidate brokers: {}", bestBrokers.size(), bestBrokers,
                     candidates);