From commits-return-8408-archive-asf-public=cust-asf.ponee.io@zookeeper.apache.org Thu May 14 16:18:45 2020 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [207.244.88.153]) by mx-eu-01.ponee.io (Postfix) with SMTP id A7E75180621 for ; Thu, 14 May 2020 18:18:44 +0200 (CEST) Received: (qmail 14259 invoked by uid 500); 14 May 2020 16:18:43 -0000 Mailing-List: contact commits-help@zookeeper.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@zookeeper.apache.org Delivered-To: mailing list commits@zookeeper.apache.org Received: (qmail 14246 invoked by uid 99); 14 May 2020 16:18:43 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 14 May 2020 16:18:43 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id 381E28091B; Thu, 14 May 2020 16:18:43 +0000 (UTC) Date: Thu, 14 May 2020 16:18:42 +0000 To: "commits@zookeeper.apache.org" Subject: [zookeeper] branch master updated: ZOOKEEPER-3721: Making the boolean configuration parameters consistent MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <158947312288.29887.11697987102545227226@gitbox.apache.org> From: eolivelli@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: zookeeper X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 236e3d9183606512f0e03a1f828ad0d392eb6091 X-Git-Newrev: 45bc3ece8964a24feb808926f18f6e53319aa683 X-Git-Rev: 45bc3ece8964a24feb808926f18f6e53319aa683 X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated 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/zookeeper.git The following commit(s) were added to refs/heads/master by this push: new 45bc3ec ZOOKEEPER-3721: Making the boolean configuration parameters consistent 45bc3ec is described below commit 45bc3ece8964a24feb808926f18f6e53319aa683 Author: ctest-team AuthorDate: Thu May 14 18:18:28 2020 +0200 ZOOKEEPER-3721: Making the boolean configuration parameters consistent Author: ctest-team Reviewers: Enrico Olivelli , Mate Szalay-Beko , Justin Ling Mao Closes #1266 from ctest-team/ZOOKEEPER-3721 --- .../zookeeper/server/quorum/QuorumPeerConfig.java | 59 ++++++++++------------ .../server/quorum/QuorumPeerConfigTest.java | 33 ++++++++++++ 2 files changed, 61 insertions(+), 31 deletions(-) diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java index ae73ef3..dbebef3 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeerConfig.java @@ -292,9 +292,9 @@ public class QuorumPeerConfig { } else if (key.equals("clientPort")) { clientPort = Integer.parseInt(value); } else if (key.equals("localSessionsEnabled")) { - localSessionsEnabled = Boolean.parseBoolean(value); + localSessionsEnabled = parseBoolean(key, value); } else if (key.equals("localSessionsUpgradingEnabled")) { - localSessionsUpgradingEnabled = Boolean.parseBoolean(value); + localSessionsUpgradingEnabled = parseBoolean(key, value); } else if (key.equals("clientPortAddress")) { clientPortAddress = value.trim(); } else if (key.equals("secureClientPort")) { @@ -325,7 +325,7 @@ public class QuorumPeerConfig { throw new ConfigException("Invalid electionAlg value. Only 3 is supported."); } } else if (key.equals("quorumListenOnAllIPs")) { - quorumListenOnAllIPs = Boolean.parseBoolean(value); + quorumListenOnAllIPs = parseBoolean(key, value); } else if (key.equals("peerType")) { if (value.toLowerCase().equals("observer")) { peerType = LearnerType.OBSERVER; @@ -335,7 +335,7 @@ public class QuorumPeerConfig { throw new ConfigException("Unrecognised peertype: " + value); } } else if (key.equals("syncEnabled")) { - syncEnabled = Boolean.parseBoolean(value); + syncEnabled = parseBoolean(key, value); } else if (key.equals("dynamicConfigFile")) { dynamicConfigFileStr = value; } else if (key.equals("autopurge.snapRetainCount")) { @@ -343,40 +343,24 @@ public class QuorumPeerConfig { } else if (key.equals("autopurge.purgeInterval")) { purgeInterval = Integer.parseInt(value); } else if (key.equals("standaloneEnabled")) { - if (value.toLowerCase().equals("true")) { - setStandaloneEnabled(true); - } else if (value.toLowerCase().equals("false")) { - setStandaloneEnabled(false); - } else { - throw new ConfigException("Invalid option " - + value - + " for standalone mode. Choose 'true' or 'false.'"); - } + setStandaloneEnabled(parseBoolean(key, value)); } else if (key.equals("reconfigEnabled")) { - if (value.toLowerCase().equals("true")) { - setReconfigEnabled(true); - } else if (value.toLowerCase().equals("false")) { - setReconfigEnabled(false); - } else { - throw new ConfigException("Invalid option " - + value - + " for reconfigEnabled flag. Choose 'true' or 'false.'"); - } + setReconfigEnabled(parseBoolean(key, value)); } else if (key.equals("sslQuorum")) { - sslQuorum = Boolean.parseBoolean(value); + sslQuorum = parseBoolean(key, value); } else if (key.equals("portUnification")) { - shouldUsePortUnification = Boolean.parseBoolean(value); + shouldUsePortUnification = parseBoolean(key, value); } else if (key.equals("sslQuorumReloadCertFiles")) { - sslQuorumReloadCertFiles = Boolean.parseBoolean(value); + sslQuorumReloadCertFiles = parseBoolean(key, value); } else if ((key.startsWith("server.") || key.startsWith("group") || key.startsWith("weight")) && zkProp.containsKey("dynamicConfigFile")) { throw new ConfigException("parameter: " + key + " must be in a separate dynamic config file"); } else if (key.equals(QuorumAuth.QUORUM_SASL_AUTH_ENABLED)) { - quorumEnableSasl = Boolean.parseBoolean(value); + quorumEnableSasl = parseBoolean(key, value); } else if (key.equals(QuorumAuth.QUORUM_SERVER_SASL_AUTH_REQUIRED)) { - quorumServerRequireSasl = Boolean.parseBoolean(value); + quorumServerRequireSasl = parseBoolean(key, value); } else if (key.equals(QuorumAuth.QUORUM_LEARNER_SASL_AUTH_REQUIRED)) { - quorumLearnerRequireSasl = Boolean.parseBoolean(value); + quorumLearnerRequireSasl = parseBoolean(key, value); } else if (key.equals(QuorumAuth.QUORUM_LEARNER_SASL_LOGIN_CONTEXT)) { quorumLearnerLoginContext = value; } else if (key.equals(QuorumAuth.QUORUM_SERVER_SASL_LOGIN_CONTEXT)) { @@ -392,18 +376,18 @@ public class QuorumPeerConfig { } else if (key.equals(JvmPauseMonitor.SLEEP_TIME_MS_KEY)) { jvmPauseSleepTimeMs = Long.parseLong(value); } else if (key.equals(JvmPauseMonitor.JVM_PAUSE_MONITOR_FEATURE_SWITCH_KEY)) { - jvmPauseMonitorToRun = Boolean.parseBoolean(value); + jvmPauseMonitorToRun = parseBoolean(key, value); } else if (key.equals("metricsProvider.className")) { metricsProviderClassName = value; } else if (key.startsWith("metricsProvider.")) { String keyForMetricsProvider = key.substring(16); metricsProviderConfiguration.put(keyForMetricsProvider, value); } else if (key.equals("multiAddress.enabled")) { - multiAddressEnabled = Boolean.parseBoolean(value); + multiAddressEnabled = parseBoolean(key, value); } else if (key.equals("multiAddress.reachabilityCheckTimeoutMs")) { multiAddressReachabilityCheckTimeoutMs = Integer.parseInt(value); } else if (key.equals("multiAddress.reachabilityCheckEnabled")) { - multiAddressReachabilityCheckEnabled = Boolean.parseBoolean(value); + multiAddressReachabilityCheckEnabled = parseBoolean(key, value); } else { System.setProperty("zookeeper." + key, value); } @@ -969,4 +953,17 @@ public class QuorumPeerConfig { reconfigEnabled = enabled; } + private boolean parseBoolean(String key, String value) throws ConfigException { + if (value.equalsIgnoreCase("true")) { + return true; + } else if (value.equalsIgnoreCase("false")) { + return false; + } else { + throw new ConfigException("Invalid option " + + value + + " for " + + key + + ". Choose 'true' or 'false.'"); + } + } } diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java index 0d7e7cc..da4bedf 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/server/quorum/QuorumPeerConfigTest.java @@ -164,6 +164,39 @@ public class QuorumPeerConfigTest { assertTrue(quorumPeerConfig.isJvmPauseMonitorToRun()); } + /** + * Test case for https://issues.apache.org/jira/browse/ZOOKEEPER-3721 + */ + @Test + public void testParseBoolean() throws IOException, ConfigException { + QuorumPeerConfig quorumPeerConfig = new QuorumPeerConfig(); + Properties zkProp = getDefaultZKProperties(); + + zkProp.setProperty("localSessionsEnabled", "true"); + quorumPeerConfig.parseProperties(zkProp); + assertEquals(true, quorumPeerConfig.areLocalSessionsEnabled()); + + zkProp.setProperty("localSessionsEnabled", "false"); + quorumPeerConfig.parseProperties(zkProp); + assertEquals(false, quorumPeerConfig.areLocalSessionsEnabled()); + + zkProp.setProperty("localSessionsEnabled", "True"); + quorumPeerConfig.parseProperties(zkProp); + assertEquals(true, quorumPeerConfig.areLocalSessionsEnabled()); + + zkProp.setProperty("localSessionsEnabled", "False"); + quorumPeerConfig.parseProperties(zkProp); + assertEquals(false, quorumPeerConfig.areLocalSessionsEnabled()); + + zkProp.setProperty("localSessionsEnabled", "yes"); + try { + quorumPeerConfig.parseProperties(zkProp); + fail("Must throw exception as 'yes' is not accpetable for parseBoolean!"); + } catch (ConfigException e) { + // expected + } + } + private Properties getDefaultZKProperties() { Properties zkProp = new Properties(); zkProp.setProperty("dataDir", new File("myDataDir").getAbsolutePath());