This is an automated email from the ASF dual-hosted git repository. mmerli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push: new 0ba6ae9 Use double to configure loadBalancerOverrideBrokerNicSpeedGbps (#1180) 0ba6ae9 is described below commit 0ba6ae94ab1e5a6e7c35cec248f93b5775004c30 Author: Matteo Merli <mme...@apache.org> AuthorDate: Mon Feb 5 18:54:48 2018 -0800 Use double to configure loadBalancerOverrideBrokerNicSpeedGbps (#1180) * Use double to configure loadBalancerOverrideBrokerNicSpeedGbps * Fixed tests --- conf/broker.conf | 3 ++- .../main/java/org/apache/pulsar/broker/ServiceConfiguration.java | 6 +++--- .../pulsar/broker/loadbalance/impl/LinuxBrokerHostUsageImpl.java | 2 +- .../apache/pulsar/broker/loadbalance/LoadReportNetworkLimit.java | 6 +++--- .../org/apache/pulsar/common/naming/ServiceConfigurationTest.java | 2 +- .../src/main/java/org/apache/pulsar/common/util/FieldParser.java | 7 ++++++- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/conf/broker.conf b/conf/broker.conf index 979f4e2..780b192 100644 --- a/conf/broker.conf +++ b/conf/broker.conf @@ -360,7 +360,8 @@ loadBalancerNamespaceMaximumBundles=128 # reported by Linux is not reflecting the real bandwidth available to the broker. # Since the network usage is employed by the load manager to decide when a broker # is overloaded, it is important to make sure the info is correct or override it -# with the right value here. +# with the right value here. The configured value can be a double (eg: 0.8) and that +# can be used to trigger load-shedding even before hitting on NIC limits. loadBalancerOverrideBrokerNicSpeedGbps= # Name of load manager to use 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 b542ee4..0a3c399 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 @@ -353,7 +353,7 @@ public class ServiceConfiguration implements PulsarConfiguration { private String loadManagerClassName = "org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl"; // Option to override the auto-detected network interfaces max speed - private Integer loadBalancerOverrideBrokerNicSpeedGbps; + private Double loadBalancerOverrideBrokerNicSpeedGbps; /**** --- Replication --- ****/ // Enable replication metrics @@ -1232,11 +1232,11 @@ public class ServiceConfiguration implements PulsarConfiguration { return this.loadBalancerNamespaceMaximumBundles; } - public Optional<Integer> getLoadBalancerOverrideBrokerNicSpeedGbps() { + public Optional<Double> getLoadBalancerOverrideBrokerNicSpeedGbps() { return Optional.ofNullable(loadBalancerOverrideBrokerNicSpeedGbps); } - public void setLoadBalancerOverrideBrokerNicSpeedGbps(int loadBalancerOverrideBrokerNicSpeedGbps) { + public void setLoadBalancerOverrideBrokerNicSpeedGbps(double loadBalancerOverrideBrokerNicSpeedGbps) { this.loadBalancerOverrideBrokerNicSpeedGbps = loadBalancerOverrideBrokerNicSpeedGbps; } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LinuxBrokerHostUsageImpl.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LinuxBrokerHostUsageImpl.java index 7cdf84c..7f75d3c 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LinuxBrokerHostUsageImpl.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/impl/LinuxBrokerHostUsageImpl.java @@ -55,7 +55,7 @@ public class LinuxBrokerHostUsageImpl implements BrokerHostUsage { private OperatingSystemMXBean systemBean; private SystemResourceUsage usage; - private final Optional<Integer> overrideBrokerNicSpeedGbps; + private final Optional<Double> overrideBrokerNicSpeedGbps; private static final Logger LOG = LoggerFactory.getLogger(LinuxBrokerHostUsageImpl.class); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadReportNetworkLimit.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadReportNetworkLimit.java index 7f83247..c9e7510 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadReportNetworkLimit.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/LoadReportNetworkLimit.java @@ -32,7 +32,7 @@ public class LoadReportNetworkLimit extends MockedPulsarServiceBaseTest { @Override public void setup() throws Exception { conf.setLoadBalancerEnabled(true); - conf.setLoadBalancerOverrideBrokerNicSpeedGbps(5); + conf.setLoadBalancerOverrideBrokerNicSpeedGbps(5.4); super.internalSetup(); } @@ -49,8 +49,8 @@ public class LoadReportNetworkLimit extends MockedPulsarServiceBaseTest { LoadManagerReport report = admin.brokerStats().getLoadReport(); if (SystemUtils.IS_OS_LINUX) { - assertEquals(report.getBandwidthIn().limit, 5.0 * 1024 * 1024); - assertEquals(report.getBandwidthOut().limit, 5.0 * 1024 * 1024); + assertEquals(report.getBandwidthIn().limit, 5.4 * 1024 * 1024); + assertEquals(report.getBandwidthOut().limit, 5.4 * 1024 * 1024); } else { // On non-Linux system we don't report the network usage assertEquals(report.getBandwidthIn().limit, -1.0); diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/common/naming/ServiceConfigurationTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/common/naming/ServiceConfigurationTest.java index bad061c..4bb4fb9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/common/naming/ServiceConfigurationTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/common/naming/ServiceConfigurationTest.java @@ -73,7 +73,7 @@ public class ServiceConfigurationTest { String confFile = "loadBalancerOverrideBrokerNicSpeedGbps=5\n"; InputStream stream = new ByteArrayInputStream(confFile.getBytes()); final ServiceConfiguration config = PulsarConfigurationLoader.create(stream, ServiceConfiguration.class); - assertEquals(config.getLoadBalancerOverrideBrokerNicSpeedGbps(), Optional.of(5)); + assertEquals(config.getLoadBalancerOverrideBrokerNicSpeedGbps(), Optional.of(5.0)); } /** diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java index ebac111..f6f4fc1 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/FieldParser.java @@ -219,7 +219,12 @@ public final class FieldParser { * @return The converted Double value. */ public static Double stringToDouble(String val) { - return Double.valueOf(trim(val)); + String v = trim(val); + if (StringUtil.isNullOrEmpty(v)) { + return null; + } else { + return Double.valueOf(v); + } } /** -- To stop receiving notification emails like this one, please contact mme...@apache.org.