diff --git a/hazelcast/cluster.py b/hazelcast/cluster.py index bdef32fde9..8a043b365e 100644 --- a/hazelcast/cluster.py +++ b/hazelcast/cluster.py @@ -216,8 +216,6 @@ def _connection_closed(self, connection, _): and self._client.lifecycle.is_live: self._client.lifecycle.fire_lifecycle_event(LIFECYCLE_STATE_DISCONNECTED) self.owner_connection_address = None - # clear member list as owner connection is lost - self.members = [] # try to reconnect, on new thread reconnect_thread = threading.Thread(target=self._reconnect, diff --git a/hazelcast/config.py b/hazelcast/config.py index f57d10e637..ea6b9bdaa5 100644 --- a/hazelcast/config.py +++ b/hazelcast/config.py @@ -168,6 +168,7 @@ class ClientNetworkConfig(object): def __init__(self): self.addresses = [] """The candidate address list that client will use to establish initial connection""" + """Example usage: addresses.append("127.0.0.1:5701") """ self.connection_attempt_limit = 2 """ While client is trying to connect initially to one of the members in the addressList, all might be not diff --git a/tests/reconnect_test.py b/tests/reconnect_test.py index c8cff04640..650772cc33 100644 --- a/tests/reconnect_test.py +++ b/tests/reconnect_test.py @@ -93,3 +93,19 @@ def assert_member_list(): self.assertEqual(new_member.uuid, client.cluster.members[0].uuid) self.assertTrueEventually(assert_member_list) + + def test_reconnect_toNewNode_ViaLastMemberList(self): + old_member = self.cluster.start_member() + config = ClientConfig() + config.network_config.addresses.append("127.0.0.1:5701") + config.network_config.smart_routing = False + config.network_config.connection_attempt_limit = 100 + client = self.create_client(config) + new_member = self.cluster.start_member() + old_member.shutdown() + + def assert_member_list(): + self.assertEqual(1, len(client.cluster.members)) + self.assertEqual(new_member.uuid, client.cluster.members[0].uuid) + + self.assertTrueEventually(assert_member_list)