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.

Reply via email to