Fangmin Lv created ZOOKEEPER-2847:
-------------------------------------
Summary: Cannot bind to client port when reconfig based on old
static config
Key: ZOOKEEPER-2847
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2847
Project: ZooKeeper
Issue Type: Bug
Components: server
Affects Versions: 3.5.3, 3.6.0
Reporter: Fangmin Lv
When started the ensemble with old static config that the server string doesn't
have client port, dynamically remove and add the same server from the ensemble
will cause that server cannot bind to client port, and the ZooKeeper server
cannot serve client requests anymore.
>From the code, we'll set the clientAddr to null when start up with old static
>config, and dynamic config forces to have <client port> part, which will
>trigger the following rebind code in QuorumPeer#processReconfig, and cause the
>address already in used issue.
public boolean processReconfig(QuorumVerifier qv, Long suggestedLeaderId,
Long zxid, boolean restartLE) {
...
if (myNewQS != null && myNewQS.clientAddr != null
&& !myNewQS.clientAddr.equals(oldClientAddr)) {
cnxnFactory.reconfigure(myNewQS.clientAddr);
updateThreadName();
}
...
}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)