### Eclipse Workspace Patch 1.0 #P hbase Index: core/src/main/java/org/apache/hadoop/hbase/HConstants.java =================================================================== --- core/src/main/java/org/apache/hadoop/hbase/HConstants.java (revision 922401) +++ core/src/main/java/org/apache/hadoop/hbase/HConstants.java (working copy) @@ -93,6 +93,9 @@ /** Default ZooKeeper pause value. In milliseconds. */ static final int DEFAULT_ZOOKEEPER_PAUSE = 2 * 1000; + /** default client port that the zookeeper listens on */ + static final int DEFAULT_ZOOKEPER_CLIENT_PORT = 2181; + /** Parameter name for the root dir in ZK for this cluster */ static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent"; Index: core/src/main/java/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.java =================================================================== --- core/src/main/java/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.java (revision 922401) +++ core/src/main/java/org/apache/hadoop/hbase/zookeeper/HQuorumPeer.java (working copy) @@ -196,6 +196,8 @@ } } + assignDefaultsForMissingProperties(zkProperties); + // Create the server.X properties. int peerPort = conf.getInt("hbase.zookeeper.peerport", 2888); int leaderPort = conf.getInt("hbase.zookeeper.leaderport", 3888); @@ -212,6 +214,20 @@ } /** + * Assign Defaults for properties if not explicitly set + * + * @param zkProperties + */ + private static void assignDefaultsForMissingProperties(Properties zkProperties) { + // If clientPort is not set, assign the default + String clientPortKey = ZK_CFG_PROPERTY + "clientPort"; + if (zkProperties.getProperty(clientPortKey) == null) { + int clientPortValue = HQuorumPeer.DEFAULT_ZOOKEPER_CLIENT_PORT; + zkProperties.put(clientPortKey, Integer.valueOf(clientPortValue)); + } + } + + /** * Parse ZooKeeper's zoo.cfg, injecting HBase Configuration variables in. * This method is used for testing so we can pass our own InputStream. * @param conf HBaseConfiguration to use for injecting variables. Index: core/src/test/java/org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.java =================================================================== --- core/src/test/java/org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.java (revision 922401) +++ core/src/test/java/org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.java (working copy) @@ -24,7 +24,9 @@ import java.util.Map; import java.util.Properties; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestCase; import org.apache.hadoop.hbase.HConstants; import org.apache.zookeeper.server.quorum.QuorumPeerConfig; @@ -136,4 +138,16 @@ server = servers.get(Long.valueOf(0)); assertEquals("foo.bar", server.addr.getHostName()); } + + /** + * Test Case for HBASE-2305 + */ + public void testShouldAssignDefaultZookeeperClientPort() { + Configuration config = HBaseConfiguration.create(); + config.clear(); + Properties p = HQuorumPeer.makeZKProps(config); + assertNotNull(p); + assertEquals(Integer.valueOf(2181), p + .get("hbase.zookeeper.property.clientPort")); + } }