Stig Rohde Døssing created CURATOR-402:
------------------------------------------

             Summary: Curator should not use QuorumServer.addr when updating 
the connect string dynamically
                 Key: CURATOR-402
                 URL: https://issues.apache.org/jira/browse/CURATOR-402
             Project: Apache Curator
          Issue Type: Bug
    Affects Versions: 3.3.0, 3.2.1
            Reporter: Stig Rohde Døssing
            Assignee: Jordan Zimmerman


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:

{code}
19:54:10.691 [main-EventThread] ERROR 
org.apache.curator.framework.imps.EnsembleTracker - Getting clientAddr 
/0.0.0.0:2181 and server addr localhost/127.0.0.1:2888
19:54:10.691 [main-EventThread] ERROR 
org.apache.curator.framework.imps.EnsembleTracker - Getting clientAddr 
/0.0.0.0:2182 and server addr localhost/127.0.0.1:2889
19:54:10.691 [main-EventThread] ERROR 
org.apache.curator.framework.imps.EnsembleTracker - Getting clientAddr 
/0.0.0.0:2183 and server addr localhost/127.0.0.1:2890
{code}

If the ensemble is configured with the old clientPort property, the clientAddr 
fields will be null:

{code}
19:59:23.801 [main-EventThread] ERROR 
org.apache.curator.framework.imps.EnsembleTracker - Getting clientAddr null and 
server addr localhost/127.0.0.1:2888
19:59:23.801 [main-EventThread] ERROR 
org.apache.curator.framework.imps.EnsembleTracker - Getting clientAddr null and 
server addr localhost/127.0.0.1:2889
19:59:23.801 [main-EventThread] ERROR 
org.apache.curator.framework.imps.EnsembleTracker - Getting clientAddr null and 
server addr localhost/127.0.0.1:2890
{code}

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.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to