This is an automated email from the ASF dual-hosted git repository. eolivelli 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 0e149ef0484 [refactor][broker]refactor reflection method in loadbalance (#17313) 0e149ef0484 is described below commit 0e149ef0484755d42e214f03003237299433c89a Author: Qiang Huang <hqeb...@users.noreply.github.com> AuthorDate: Mon Aug 29 17:05:17 2022 +0800 [refactor][broker]refactor reflection method in loadbalance (#17313) --- .../apache/pulsar/broker/loadbalance/LoadManager.java | 5 +++-- .../broker/loadbalance/impl/ModularLoadManagerImpl.java | 16 ++++++---------- 2 files changed, 9 insertions(+), 12 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 e26b27950ec..fc0b0ddfd35 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 @@ -29,6 +29,7 @@ import org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerWrapper; import org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl; import org.apache.pulsar.common.naming.ServiceUnitId; import org.apache.pulsar.common.stats.Metrics; +import org.apache.pulsar.common.util.Reflections; import org.apache.pulsar.policies.data.loadbalancer.LoadManagerReport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -131,9 +132,9 @@ public interface LoadManager { static LoadManager create(final PulsarService pulsar) { try { final ServiceConfiguration conf = pulsar.getConfiguration(); - final Class<?> loadManagerClass = Class.forName(conf.getLoadManagerClassName()); // Assume there is a constructor with one argument of PulsarService. - final Object loadManagerInstance = loadManagerClass.getDeclaredConstructor().newInstance(); + final Object loadManagerInstance = Reflections.createInstance(conf.getLoadManagerClassName(), + Thread.currentThread().getContextClassLoader()); if (loadManagerInstance instanceof LoadManager) { final LoadManager casted = (LoadManager) loadManagerInstance; casted.initialize(pulsar); diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java index 0c86602695a..78d77102392 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/ModularLoadManagerImpl.java @@ -70,6 +70,7 @@ import org.apache.pulsar.common.policies.data.LocalPolicies; import org.apache.pulsar.common.policies.data.ResourceQuota; import org.apache.pulsar.common.stats.Metrics; import org.apache.pulsar.common.util.FutureUtil; +import org.apache.pulsar.common.util.Reflections; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; import org.apache.pulsar.common.util.collections.ConcurrentOpenHashSet; import org.apache.pulsar.metadata.api.MetadataCache; @@ -300,18 +301,13 @@ public class ModularLoadManagerImpl implements ModularLoadManager { private LoadSheddingStrategy createLoadSheddingStrategy() { try { - Class<?> loadSheddingClass = Class.forName(conf.getLoadBalancerLoadSheddingStrategy()); - Object loadSheddingInstance = loadSheddingClass.getDeclaredConstructor().newInstance(); - if (loadSheddingInstance instanceof LoadSheddingStrategy) { - return (LoadSheddingStrategy) loadSheddingInstance; - } else { - log.error("create load shedding strategy failed. using OverloadShedder instead."); - return new OverloadShedder(); - } + return Reflections.createInstance(conf.getLoadBalancerLoadSheddingStrategy(), LoadSheddingStrategy.class, + Thread.currentThread().getContextClassLoader()); } catch (Exception e) { - log.error("Error when trying to create load shedding strategy: ", e); + log.error("Error when trying to create load shedding strategy: {}", + conf.getLoadBalancerLoadPlacementStrategy(), e); } - + log.error("create load shedding strategy failed. using OverloadShedder instead."); return new OverloadShedder(); }