[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1994?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14083681#comment-14083681
 ] 

Hongchao Deng commented on ZOOKEEPER-1994:
------------------------------------------

Thanks for the comments. [~shralex]
Could you explain
{code}
            if (clientPortAddress!=null && qs!=null && qs.clientAddr!=null){ 
                if ((!clientPortAddress.getAddress().isAnyLocalAddress()
                       && !clientPortAddress.equals(qs.clientAddr)) || 
                   (clientPortAddress.getAddress().isAnyLocalAddress() 
                       && 
clientPortAddress.getPort()!=qs.clientAddr.getPort())) 
                    throw new ConfigException("client address for this server 
(id = " + serverId + ") in static config file is " + clientPortAddress + " is 
different from client address found in dynamic file: " + qs.clientAddr);
                else {
                    editStaticConfig(configFileStr, dynamicConfigFileStr, true);
                }
            }
{code}

the logic behind this and why it causes the race?

> Backup config files.
> --------------------
>
>                 Key: ZOOKEEPER-1994
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1994
>             Project: ZooKeeper
>          Issue Type: Improvement
>    Affects Versions: 3.5.0
>            Reporter: Hongchao Deng
>            Assignee: Hongchao Deng
>             Fix For: 3.5.1
>
>         Attachments: draft.patch, first-try.patch, static-backup.patch
>
>
> We should create a backup file for a static or dynamic configuration file 
> before changing the file. 
> Since the static file is changed at most twice (once when removing the 
> ensemble definitions, at which point a dynamic file doesn't exist yet, and 
> once when removing clientPort information) its probably fine to back up the 
> static file independently from the dynamic file. 
> To track backup history:
> Option 1: we could have a .bakXX extention for backup where XX is a  sequence 
> number. 
> Option 2: have the configuration version be part of the file name for dynamic 
> configuration files (instead of in the file like now). Such as 
> zoo_replicated1.cfg.dynamic.1000000 then on reconfiguration simply create a 
> new dynamic file (with new version) and update the link in the static file to 
> point to the new dynamic one.
> Review place:
> https://reviews.apache.org/r/24208/



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to