You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by lh...@apache.org on 2026/06/22 10:48:24 UTC

(pulsar) 06/18: [fix][broker] Fail fast for load balancer misconfigurations instead of falling back to SimpleLoadManagerImpl (#26031)

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

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

commit 49ead2f7fbfee0f987b1013e71c39c328372ce79
Author: Yunze Xu <xy...@163.com>
AuthorDate: Mon Jun 15 18:59:02 2026 +0800

    [fix][broker] Fail fast for load balancer misconfigurations instead of falling back to SimpleLoadManagerImpl (#26031)
    
    (cherry picked from commit c3f8c05e4f27b194d889cbe3eefc4d83548628aa)
---
 .../pulsar/broker/loadbalance/LoadManager.java     | 52 ++++++++++------------
 1 file changed, 24 insertions(+), 28 deletions(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadManager.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadManager.java
index 9399fcb3aad7..c9aa673d6b53 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadManager.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadManager.java
@@ -151,35 +151,31 @@ public interface LoadManager {
     void initialize(PulsarService pulsar);
 
     static LoadManager create(final PulsarService pulsar) {
-        try {
-            final ServiceConfiguration conf = pulsar.getConfiguration();
-
-            String loadManagerClassName = conf.getLoadManagerClassName();
-            if (StringUtils.isBlank(loadManagerClassName)) {
-                loadManagerClassName = SimpleLoadManagerImpl.class.getName();
-            }
-
-            // Assume there is a constructor with one argument of PulsarService.
-            final Object loadManagerInstance = Reflections.createInstance(loadManagerClassName,
-                    Thread.currentThread().getContextClassLoader());
-            if (loadManagerInstance instanceof LoadManager casted) {
-                casted.initialize(pulsar);
-                return casted;
-            } else if (loadManagerInstance instanceof ModularLoadManager modularLoadManager) {
-                final LoadManager casted = new ModularLoadManagerWrapper(modularLoadManager);
-                casted.initialize(pulsar);
-                return casted;
-            } else if (loadManagerInstance instanceof ExtensibleLoadManager) {
-                final LoadManager casted =
-                        new ExtensibleLoadManagerWrapper((ExtensibleLoadManagerImpl) loadManagerInstance);
-                casted.initialize(pulsar);
-                return casted;
-            }
-        } catch (Exception e) {
-            LOG.warn("Error when trying to create load manager: ", e);
+        final ServiceConfiguration conf = pulsar.getConfiguration();
+
+        String loadManagerClassName = conf.getLoadManagerClassName();
+        if (StringUtils.isBlank(loadManagerClassName)) {
+            loadManagerClassName = SimpleLoadManagerImpl.class.getName();
+        }
+
+        // Assume there is a constructor with one argument of PulsarService.
+        final Object loadManagerInstance = Reflections.createInstance(loadManagerClassName,
+                Thread.currentThread().getContextClassLoader());
+        if (loadManagerInstance instanceof LoadManager casted) {
+            casted.initialize(pulsar);
+            return casted;
+        } else if (loadManagerInstance instanceof ModularLoadManager modularLoadManager) {
+            final LoadManager casted = new ModularLoadManagerWrapper(modularLoadManager);
+            casted.initialize(pulsar);
+            return casted;
+        } else if (loadManagerInstance instanceof ExtensibleLoadManager) {
+            final LoadManager casted =
+                    new ExtensibleLoadManagerWrapper((ExtensibleLoadManagerImpl) loadManagerInstance);
+            casted.initialize(pulsar);
+            return casted;
+        } else {
+            throw new IllegalArgumentException(loadManagerClassName + " is not a supported LoadManager");
         }
-        // If we failed to create a load manager, default to SimpleLoadManagerImpl.
-        return new SimpleLoadManagerImpl(pulsar);
     }
 
 }