Affects Version/s: 3.2.1, 3.3.0
Fix Version/s: None
https://issues.apache.org/jira/browse/CURATOR-345 made a change to EnsembleTracker to read the QuorumServer.addr in case the QuorumServer.clientAddr field is null. This doesn't seem right to me.
When the Zookeeper cluster is configured with the new clientPort syntax (http://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_clientport), the clientAddr is correctly set:
If the ensemble is configured with the old clientPort property, the clientAddr fields will be null:
Before https://issues.apache.org/jira/browse/CURATOR-345, this was okay, since using the old clientPort property just wound up making the EnsembleTracker.configToConnectionString method return an empty string, which effectively disables Curators ability to update the connection string.
With the new behavior, the connect string will be updated to the server addresses (i.e. the peer ports) if the clientAddr fields are null, which will result in Curator being unable to reconnect if the Zookeeper instance needs to be replaced.
As far as I'm aware the client has no use for the Zookeeper peer ports, so the change from https://issues.apache.org/jira/browse/CURATOR-345 should probably be reverted.