You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ph...@apache.org on 2016/08/24 18:33:36 UTC
svn commit: r1757564 - in /zookeeper/trunk: CHANGES.txt
src/c/src/zk_adaptor.h src/c/src/zookeeper.c src/c/tests/TestReconfig.cc
Author: phunt
Date: Wed Aug 24 18:33:36 2016
New Revision: 1757564
URL: http://svn.apache.org/viewvc?rev=1757564&view=rev
Log:
ZOOKEEPER-2152: Intermittent failure in TestReconfig.cc (Michael Han via phunt)
Modified:
zookeeper/trunk/CHANGES.txt
zookeeper/trunk/src/c/src/zk_adaptor.h
zookeeper/trunk/src/c/src/zookeeper.c
zookeeper/trunk/src/c/tests/TestReconfig.cc
Modified: zookeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/trunk/CHANGES.txt?rev=1757564&r1=1757563&r2=1757564&view=diff
==============================================================================
--- zookeeper/trunk/CHANGES.txt (original)
+++ zookeeper/trunk/CHANGES.txt Wed Aug 24 18:33:36 2016
@@ -356,6 +356,9 @@ BUGFIXES:
with zk operation without connecting to ZooKeeper server.
(Arshad Mohammad via phunt)
+ ZOOKEEPER-2152: Intermittent failure in TestReconfig.cc
+ (Michael Han via phunt)
+
IMPROVEMENTS:
ZOOKEEPER-2024 Major throughput improvement with mixed workloads (Kfir Lev-Ari via shralex)
Modified: zookeeper/trunk/src/c/src/zk_adaptor.h
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/src/zk_adaptor.h?rev=1757564&r1=1757563&r2=1757564&view=diff
==============================================================================
--- zookeeper/trunk/src/c/src/zk_adaptor.h (original)
+++ zookeeper/trunk/src/c/src/zk_adaptor.h Wed Aug 24 18:33:36 2016
@@ -202,6 +202,11 @@ struct _zhandle {
int reconfig; // Are we in the process of reconfiguring cluster's ensemble
double pOld, pNew; // Probability for selecting between 'addrs_old' and 'addrs_new'
int delay;
+ int disable_reconnection_attempt; // When set, client will not try reconnect to a different server in
+ // server list. This makes a sticky server for client, and is useful
+ // for testing if a sticky server is required, or if client wants to
+ // explicitly shuffle server by calling zoo_cycle_next_server.
+ // The default value is 0.
watcher_fn watcher; // the registered watcher
Modified: zookeeper/trunk/src/c/src/zookeeper.c
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/src/zookeeper.c?rev=1757564&r1=1757563&r2=1757564&view=diff
==============================================================================
--- zookeeper/trunk/src/c/src/zookeeper.c (original)
+++ zookeeper/trunk/src/c/src/zookeeper.c Wed Aug 24 18:33:36 2016
@@ -1177,6 +1177,7 @@ static zhandle_t *zookeeper_init_interna
zh->active_node_watchers=create_zk_hashtable();
zh->active_exist_watchers=create_zk_hashtable();
zh->active_child_watchers=create_zk_hashtable();
+ zh->disable_reconnection_attempt = 0;
if (adaptor_init(zh) == -1) {
goto abort;
@@ -2194,8 +2195,10 @@ int zookeeper_interest(zhandle_t *zh, so
*
* We always clear the delay setting. If we fail again, we'll set delay
* again and on the next iteration we'll do the same.
+ *
+ * We will also delay if the disable_reconnection_attempt is set.
*/
- if (zh->delay == 1) {
+ if (zh->delay == 1 || zh->disable_reconnection_attempt == 1) {
*tv = get_timeval(zh->recv_timeout/60);
zh->delay = 0;
Modified: zookeeper/trunk/src/c/tests/TestReconfig.cc
URL: http://svn.apache.org/viewvc/zookeeper/trunk/src/c/tests/TestReconfig.cc?rev=1757564&r1=1757563&r2=1757564&view=diff
==============================================================================
--- zookeeper/trunk/src/c/tests/TestReconfig.cc (original)
+++ zookeeper/trunk/src/c/tests/TestReconfig.cc Wed Aug 24 18:33:36 2016
@@ -55,6 +55,11 @@ public:
zh = zookeeper_init(hosts.c_str(),0,1000,0,0,0);
CPPUNIT_ASSERT(zh);
+ // Set the flag to disable ZK from reconnecting to a different server.
+ // Our reconfig test case will do explicit server shuffling through
+ // zoo_cycle_next_server, and the reconnection attempts would interfere
+ // with the server states the tests cases assume.
+ zh->disable_reconnection_attempt = 1;
reSeed();
cycleNextServer();