Uploaded image for project: 'Apache Curator'
  1. Apache Curator
  2. CURATOR-402

Curator should not use QuorumServer.addr when updating the connect string dynamically

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 3.2.1, 3.3.0
    • None
    • None
    • None

    Description

      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:

      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
      

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

      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
      

      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.

      Attachments

        Issue Links

          Activity

            People

              randgalt Jordan Zimmerman
              srdo Stig Rohde Døssing
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: