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);
}
}