[
https://issues.apache.org/jira/browse/CURATOR-551?focusedWorklogId=385113&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-385113
]
ASF GitHub Bot logged work on CURATOR-551:
------------------------------------------
Author: ASF GitHub Bot
Created on: 11/Feb/20 12:37
Start Date: 11/Feb/20 12:37
Worklog Time Spent: 10m
Work Description: Randgalt commented on pull request #345: [CURATOR-551]
Fix Handle Holder new connection string
URL: https://github.com/apache/curator/pull/345#discussion_r377607990
##########
File path: curator-client/src/main/java/org/apache/curator/HandleHolder.java
##########
@@ -70,7 +61,16 @@ String getConnectionString()
String getNewConnectionString()
{
String helperConnectionString = (helper != null) ?
helper.getConnectionString() : null;
- return ((helperConnectionString != null) &&
!ensembleProvider.getConnectionString().equals(helperConnectionString)) ?
helperConnectionString : null;
+ String ensembleProviderConnectionString =
ensembleProvider.getConnectionString();
Review comment:
> whole flow of how things interact is very confusing
Too true. What do we do? Should we attempt a more aggressive change?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 385113)
Time Spent: 1.5h (was: 1h 20m)
> Curator client always call updateServerList with original serverList value,
> not the ones updated by EnsembleTracker
> -------------------------------------------------------------------------------------------------------------------
>
> Key: CURATOR-551
> URL: https://issues.apache.org/jira/browse/CURATOR-551
> Project: Apache Curator
> Issue Type: Bug
> Components: Client
> Affects Versions: 4.2.0
> Reporter: kelgon wu
> Assignee: Jordan Zimmerman
> Priority: Major
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> Whenever ConnectionState.handleNewConnectionString is triggered, the value of
> newConnectionString is always the value used to construct the
> FixedEnsembleProvider
>
> in ConnectionState:
> {code:java}
> String newConnectionString = zooKeeper.getNewConnectionString();
> if ( newConnectionString != null ) {
> handleNewConnectionString(newConnectionString);
> }
> ...
> if ( ensembleProvider.updateServerListEnabled() ) {
> zooKeeper.updateServerList(newConnectionString);
> } else {
> reset();
> }{code}
>
> in HandleHolder:
> {code:java}
> String getNewConnectionString() {
> String helperConnectionString = (helper != null) ?
> helper.getConnectionString() : null;
> return ((helperConnectionString != null) &&
> !ensembleProvider.getConnectionString().equals(helperConnectionString)) ?
> helperConnectionString : null;
> }{code}
> code above shows that the newConnectionString is provided by
> helper.getConnectionString(), which only instantiated on first call of
> getZookeeper:
> {code:java}
> @Override
> public ZooKeeper getZooKeeper() throws Exception
> {
> synchronized(this)
> {
> if ( zooKeeperHandle == null )
> {
> connectionString = ensembleProvider.getConnectionString();
> zooKeeperHandle = zookeeperFactory.newZooKeeper(connectionString,
> sessionTimeout, watcher, canBeReadOnly);
> }
> ...{code}
>
> As a result, when I reconfig zookeeper serverList, curator client always call
> updateServerList with the initial value, not the ones I just reconfigured
--
This message was sent by Atlassian Jira
(v8.3.4#803005)