You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2017/12/27 21:35:13 UTC
[GitHub] rdhabalia closed pull request #1012: Make load-balancer shedding dynamic configurable
rdhabalia closed pull request #1012: Make load-balancer shedding dynamic configurable
URL: https://github.com/apache/incubator-pulsar/pull/1012
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
index e9509458a..f0aae8247 100644
--- a/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
+++ b/pulsar-broker-common/src/main/java/org/apache/pulsar/broker/ServiceConfiguration.java
@@ -291,6 +291,9 @@
private int loadBalancerReportUpdateMaxIntervalMinutes = 15;
// Frequency of report to collect
private int loadBalancerHostUsageCheckIntervalMinutes = 1;
+ // Enable/disable automatic bundle unloading for load-shedding
+ @FieldContext(dynamic = true)
+ private boolean loadBalancerSheddingEnabled = true;
// Load shedding interval. Broker periodically checks whether some traffic should be offload from some over-loaded
// broker to other under-loaded brokers
private int loadBalancerSheddingIntervalMinutes = 5;
@@ -1030,6 +1033,14 @@ public void setLoadBalancerHostUsageCheckIntervalMinutes(int loadBalancerHostUsa
this.loadBalancerHostUsageCheckIntervalMinutes = loadBalancerHostUsageCheckIntervalMinutes;
}
+ public boolean isLoadBalancerSheddingEnabled() {
+ return loadBalancerSheddingEnabled;
+ }
+
+ public void setLoadBalancerSheddingEnabled(boolean loadBalancerSheddingEnabled) {
+ this.loadBalancerSheddingEnabled = loadBalancerSheddingEnabled;
+ }
+
public int getLoadBalancerSheddingIntervalMinutes() {
return loadBalancerSheddingIntervalMinutes;
}
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java
index 2100cf4ff..f542a10f0 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/AdminResource.java
@@ -69,7 +69,6 @@
public abstract class AdminResource extends PulsarWebResource {
private static final Logger log = LoggerFactory.getLogger(AdminResource.class);
private static final String POLICIES_READONLY_FLAG_PATH = "/admin/flags/policies-readonly";
- public static final String LOAD_SHEDDING_UNLOAD_DISABLED_FLAG_PATH = "/admin/flags/load-shedding-unload-disabled";
public static final String PARTITIONED_TOPIC_PATH_ZNODE = "partitioned-topics";
protected ZooKeeper globalZk() {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java
index aab06de30..82d0bd7ee 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LoadManagerShared.java
@@ -203,25 +203,13 @@ public static SystemResourceUsage getSystemResourceUsage(final BrokerHostUsage b
}
/**
- * If load balancing is enabled, load shedding is enabled by default unless forced off by setting a flag in global
- * zk /admin/flags/load-shedding-unload-disabled
+ * If load balancing is enabled, load shedding is enabled by default unless forced off by dynamic configuration
*
- * @return false by default, unload is allowed in load shedding true if zk flag is set, unload is disabled
+ * @return true by default
*/
- public static boolean isUnloadDisabledInLoadShedding(final PulsarService pulsar) {
- if (!pulsar.getConfiguration().isLoadBalancerEnabled()) {
- return true;
- }
-
- boolean unloadDisabledInLoadShedding = false;
- try {
- unloadDisabledInLoadShedding = pulsar.getGlobalZkCache()
- .exists(AdminResource.LOAD_SHEDDING_UNLOAD_DISABLED_FLAG_PATH);
- } catch (Exception e) {
- log.warn("Unable to fetch contents of [{}] from global zookeeper",
- AdminResource.LOAD_SHEDDING_UNLOAD_DISABLED_FLAG_PATH, e);
- }
- return unloadDisabledInLoadShedding;
+ public static boolean isLoadSheddingEnabled(final PulsarService pulsar) {
+ return pulsar.getConfiguration().isLoadBalancerEnabled()
+ && pulsar.getConfiguration().isLoadBalancerSheddingEnabled();
}
/**
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 6f8b1d910..29541453e 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
@@ -554,7 +554,7 @@ public void disableBroker() throws PulsarServerException {
*/
@Override
public synchronized void doLoadShedding() {
- if (LoadManagerShared.isUnloadDisabledInLoadShedding(pulsar)) {
+ if (!LoadManagerShared.isLoadSheddingEnabled(pulsar)) {
return;
}
if (getAvailableBrokers().size() <= 1) {
diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.java
index fadd0bdca..338f302dd 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/SimpleLoadManagerImpl.java
@@ -1318,7 +1318,7 @@ private void unloadNamespacesFromOverLoadedBrokers(Map<ResourceUnit, String> nam
String bundleName = bundle.getValue();
try {
if (unloadedHotNamespaceCache.getIfPresent(bundleName) == null) {
- if (!LoadManagerShared.isUnloadDisabledInLoadShedding(pulsar)) {
+ if (LoadManagerShared.isLoadSheddingEnabled(pulsar)) {
log.info("Unloading namespace {} from overloaded broker {}", bundleName, brokerName);
pulsar.getAdminClient().namespaces().unloadNamespaceBundle(
LoadManagerShared.getNamespaceNameFromBundleName(bundleName),
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services