Browse Source

ZOOKEEPER-3667: Setting jute.maxbuffer value in hexadecimal throws Exception

Author: sujithsimon22 <sujith.abraham.simon@huawei.com>

Reviewers: Mohammad Arshad <arshad@apache.org>

Closes #1222 from sujithsimon22/3667
Sujith Simon 5 năm trước cách đây
mục cha
commit
49ad75b18b

+ 1 - 1
zookeeper-server/src/main/java/org/apache/zookeeper/common/ZKConfig.java

@@ -273,7 +273,7 @@ public class ZKConfig {
     public int getInt(String key, int defaultValue) {
         String value = getProperty(key);
         if (value != null) {
-            return Integer.parseInt(value.trim());
+            return Integer.decode(value.trim());
         }
         return defaultValue;
     }

+ 25 - 0
zookeeper-server/src/test/java/org/apache/zookeeper/client/ZKClientConfigTest.java

@@ -185,4 +185,29 @@ public class ZKClientConfigTest {
         assertEquals(value, result);
     }
 
+    @Test
+    public void testIntegerRetrievalFromHexadecimalProperty() {
+        int hexaValue = 0x3000000;
+        String wrongValue = "0xwel";
+        int defaultValue = 100;
+        // property is set in hexadecimal value
+        ZKClientConfig zkClientConfig = new ZKClientConfig();
+        zkClientConfig.setProperty(ZKConfig.JUTE_MAXBUFFER,
+                Integer.toString(hexaValue));
+        int result = zkClientConfig.getInt(ZKConfig.JUTE_MAXBUFFER, defaultValue);
+        assertEquals(result, hexaValue);
+        zkClientConfig.setProperty(ZKConfig.JUTE_MAXBUFFER,
+                wrongValue);
+        try {
+            result = zkClientConfig.getInt(ZKConfig.JUTE_MAXBUFFER, defaultValue);
+            fail("NumberFormatException is expected");
+        } catch (NumberFormatException exception) {
+            // do nothing
+        }
+        zkClientConfig.setProperty(ZKConfig.JUTE_MAXBUFFER,
+                " " + hexaValue + " ");
+        result = zkClientConfig.getInt(ZKConfig.JUTE_MAXBUFFER, defaultValue);
+        assertEquals(result, hexaValue);
+    }
+
 }