Uploaded image for project: 'ZooKeeper'
  1. ZooKeeper
  2. ZOOKEEPER-1950

configBackwardCompatibilityMode breaks compatibility

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 3.5.0
    • 3.5.0
    • None
    • None

    Description

      The current implementation divide information of servers of legacy config into two separate dynamic config files. There is a problem.

      When we set "clientPort" variable in config file, it gets automatically erased and later on there is no information about "clientPort" in either the old or new (.dynamic) config file.

      It becomes a serious problem when users of 3.4 jump to 3.5 directly without changing their config: when a server crashes and restarts, there is no client port serving.

      For example,
      a legacy config might look like:

      ```zoo.cfg
      dataDir=/root/zookeeper/groupconfig/conf1/data
      syncLimit=5
      initLimit=10
      tickTime=2000
      clientPort=2181
      server.1=127.0.0.1:2222:2223
      server.2=127.0.0.1:3333:3334
      server.3=127.0.0.1:4444:4445
      ```

      After dynamic reconfig, it might look like

      ```zoo.cfg
      dataDir=/root/zookeeper/groupconfig/conf1/data
      syncLimit=5
      tickTime=2000
      initLimit=10
      dynamicConfigFile=./zoo.cfg.dynamic
      ```

      and
      ```zoo.cfg.dynamic
      server.1=127.0.0.1:2222:2223:participant
      server.2=127.0.0.1:3333:3334:participant
      server.3=127.0.0.1:4444:4445:participant
      version=e00000000
      ```

      This could be successfully started at first time. But when server restarts from crash, it never serve client port again.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              hdeng Hongchao Deng
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: