zookeeper git commit: ZOOKEEPER-2261: When only secureClientPort is configured connections, configuration, connection_stat_reset, and stats admin commands throw NullPointerException
Repository: zookeeper Updated Branches: refs/heads/branch-3.5 5bcbb2ca6 -> 14d0aaab8 ZOOKEEPER-2261: When only secureClientPort is configured connections, configuration, connection_stat_reset, and stats admin commands throw NullPointerException Root cause of the issue is that property getter returns the non-secure ServerCnxnFactory instance always. When Quorum SSL is enabled, we set a separate field which is the secure instance. Property getter should detect the scenario and return the proper instance. First commit contains some refactoring: shuffling the existing ZooKeeperServer tests to relevant places. Second commit is the actual fix + new unit tests. Sorry about indentation changes, but `FileTxnLogTest.java` was indented by 2 spaces instead of 4. Author: Andor Molnar Author: Andor Molnar Reviewers: breed, hanm, nkalmar Closes #545 from anmolnar/ZOOKEEPER-2261 Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/14d0aaab Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/14d0aaab Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/14d0aaab Branch: refs/heads/branch-3.5 Commit: 14d0aaab853d535be268a1d7a234c9c47bf4cd25 Parents: 5bcbb2c Author: Andor Molnar Authored: Mon Sep 10 15:17:45 2018 -0700 Committer: Michael Han Committed: Tue Sep 11 13:09:50 2018 -0700 -- .../zookeeper/server/ZooKeeperServer.java | 4 .../apache/zookeeper/server/admin/Commands.java | 16 - .../zookeeper/server/admin/CommandsTest.java| 25 ++-- 3 files changed, 42 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/zookeeper/blob/14d0aaab/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java -- diff --git a/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java b/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java index 4934203..eb93478 100644 --- a/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java +++ b/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java @@ -864,6 +864,10 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider { return serverCnxnFactory; } +public ServerCnxnFactory getSecureServerCnxnFactory() { +return secureServerCnxnFactory; +} + public void setSecureServerCnxnFactory(ServerCnxnFactory factory) { secureServerCnxnFactory = factory; } http://git-wip-us.apache.org/repos/asf/zookeeper/blob/14d0aaab/src/java/main/org/apache/zookeeper/server/admin/Commands.java -- diff --git a/src/java/main/org/apache/zookeeper/server/admin/Commands.java b/src/java/main/org/apache/zookeeper/server/admin/Commands.java index 4712261..f83b2f4 100644 --- a/src/java/main/org/apache/zookeeper/server/admin/Commands.java +++ b/src/java/main/org/apache/zookeeper/server/admin/Commands.java @@ -18,7 +18,9 @@ package org.apache.zookeeper.server.admin; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -29,6 +31,7 @@ import org.apache.zookeeper.Environment; import org.apache.zookeeper.Environment.Entry; import org.apache.zookeeper.Version; import org.apache.zookeeper.server.DataTree; +import org.apache.zookeeper.server.ServerCnxnFactory; import org.apache.zookeeper.server.ServerStats; import org.apache.zookeeper.server.ZKDatabase; import org.apache.zookeeper.server.ZooKeeperServer; @@ -174,7 +177,18 @@ public class Commands { @Override public CommandResponse run(ZooKeeperServer zkServer, Map kwargs) { CommandResponse response = initializeResponse(); -response.put("connections", zkServer.getServerCnxnFactory().getAllConnectionInfo(false)); +ServerCnxnFactory serverCnxnFactory = zkServer.getServerCnxnFactory(); +if (serverCnxnFactory != null) { +response.put("connections", serverCnxnFactory.getAllConnectionInfo(false)); +} else { +response.put("connections", Collections.emptyList()); +} +ServerCnxnFactory secureServerCnxnFactory = zkServer.getSecureServerCnxnFactory(); +if (secureServerCnxnFactory != null) { +response.put("secure_connections", secureServerCnxnFactory.getAllConnectionInfo(false)); +} else { +response.put("secure_connections", Collections.emptyList()); +} return response; } } http://git-wip-us.apache.org/repos/asf/zookeeper/blob/14d0aaab/src/java/test/org/apache/zookeeper/server/admin/CommandsTest.java
zookeeper git commit: ZOOKEEPER-2261: When only secureClientPort is configured connections, configuration, connection_stat_reset, and stats admin commands throw NullPointerException
Repository: zookeeper Updated Branches: refs/heads/master 181de25c0 -> 4ad2341c1 ZOOKEEPER-2261: When only secureClientPort is configured connections, configuration, connection_stat_reset, and stats admin commands throw NullPointerException Root cause of the issue is that property getter returns the non-secure ServerCnxnFactory instance always. When Quorum SSL is enabled, we set a separate field which is the secure instance. Property getter should detect the scenario and return the proper instance. First commit contains some refactoring: shuffling the existing ZooKeeperServer tests to relevant places. Second commit is the actual fix + new unit tests. Sorry about indentation changes, but `FileTxnLogTest.java` was indented by 2 spaces instead of 4. Author: Andor Molnar Author: Andor Molnar Reviewers: breed, hanm, nkalmar Closes #545 from anmolnar/ZOOKEEPER-2261 Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/4ad2341c Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/4ad2341c Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/4ad2341c Branch: refs/heads/master Commit: 4ad2341c18020ecb08e7e26b79cacc3569b9d31e Parents: 181de25 Author: Andor Molnar Authored: Mon Sep 10 15:17:45 2018 -0700 Committer: Michael Han Committed: Mon Sep 10 15:17:45 2018 -0700 -- .../zookeeper/server/ZooKeeperServer.java | 4 .../apache/zookeeper/server/admin/Commands.java | 16 - .../zookeeper/server/admin/CommandsTest.java| 25 ++-- 3 files changed, 42 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4ad2341c/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java -- diff --git a/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java b/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java index 64f242f..2c9e5e7 100644 --- a/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java +++ b/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java @@ -869,6 +869,10 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider { return serverCnxnFactory; } +public ServerCnxnFactory getSecureServerCnxnFactory() { +return secureServerCnxnFactory; +} + public void setSecureServerCnxnFactory(ServerCnxnFactory factory) { secureServerCnxnFactory = factory; } http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4ad2341c/src/java/main/org/apache/zookeeper/server/admin/Commands.java -- diff --git a/src/java/main/org/apache/zookeeper/server/admin/Commands.java b/src/java/main/org/apache/zookeeper/server/admin/Commands.java index fefccf3..3f37246 100644 --- a/src/java/main/org/apache/zookeeper/server/admin/Commands.java +++ b/src/java/main/org/apache/zookeeper/server/admin/Commands.java @@ -18,7 +18,9 @@ package org.apache.zookeeper.server.admin; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -29,6 +31,7 @@ import org.apache.zookeeper.Environment; import org.apache.zookeeper.Environment.Entry; import org.apache.zookeeper.Version; import org.apache.zookeeper.server.DataTree; +import org.apache.zookeeper.server.ServerCnxnFactory; import org.apache.zookeeper.server.ServerStats; import org.apache.zookeeper.server.ZKDatabase; import org.apache.zookeeper.server.ZooKeeperServer; @@ -174,7 +177,18 @@ public class Commands { @Override public CommandResponse run(ZooKeeperServer zkServer, Map kwargs) { CommandResponse response = initializeResponse(); -response.put("connections", zkServer.getServerCnxnFactory().getAllConnectionInfo(false)); +ServerCnxnFactory serverCnxnFactory = zkServer.getServerCnxnFactory(); +if (serverCnxnFactory != null) { +response.put("connections", serverCnxnFactory.getAllConnectionInfo(false)); +} else { +response.put("connections", Collections.emptyList()); +} +ServerCnxnFactory secureServerCnxnFactory = zkServer.getSecureServerCnxnFactory(); +if (secureServerCnxnFactory != null) { +response.put("secure_connections", secureServerCnxnFactory.getAllConnectionInfo(false)); +} else { +response.put("secure_connections", Collections.emptyList()); +} return response; } } http://git-wip-us.apache.org/repos/asf/zookeeper/blob/4ad2341c/src/java/test/org/apache/zookeeper/server/admin/CommandsTest.java