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 <[email protected]>
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();
}