From f01c7e19f76d345167d5496df1e16e18121e51a0 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 28 Jun 2018 13:51:52 -0400 Subject: [PATCH] Fix HA healing problems If we are superior to leader, become leader When abandoned by a leader, forget the leader. --- confluent_server/confluent/collective/manager.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/confluent_server/confluent/collective/manager.py b/confluent_server/confluent/collective/manager.py index 80e51829..285b691b 100644 --- a/confluent_server/confluent/collective/manager.py +++ b/confluent_server/confluent/collective/manager.py @@ -62,6 +62,8 @@ def connect_to_leader(cert=None, name=None, leader=None): if ldrc and ldrc['name'] == name: raise Exception("Redirected to self") return connect_to_leader(name=name, leader=keydata['leader']) + if 'txcount' in keydata: + return become_leader(remote) raise Exception(keydata['error']) if follower is not None: follower.kill() @@ -94,9 +96,11 @@ def connect_to_leader(cert=None, name=None, leader=None): def follow_leader(remote): + global currentleader cfm.follow_channel(remote) # The leader has folded, time to startup again... remote.close() + currentleader = None eventlet.spawn_n(start_collective)