Fix cleanup of the leader record

Change-Id: I53ed458729ea2f492242d8e253b388756132306f
This commit is contained in:
Proskurin Kirill 2017-03-16 11:49:59 +00:00
parent 74b76de1fa
commit 2da033eee5
1 changed files with 16 additions and 7 deletions

View File

@ -216,7 +216,7 @@ def run_mysqld(available_nodes, donors_list, etcd_client, lock):
etcd_deregister_in_path(etcd_client, 'queue')
etcd_deregister_in_path(etcd_client, 'nodes')
etcd_deregister_in_path(etcd_client, 'seqno')
etcd_deregister_in_path(etcd_client, 'leader', prevValue=IPADDR)
etcd_delete_if_exists(etcd_client, 'leader', IPADDR)
release_lock(lock)
mysqld_proc.send_signal(signum)
@ -315,14 +315,23 @@ def etcd_set_seqno(etcd_client, ttl):
_etcd_set(etcd_client, key, seqno, ttl)
def etcd_deregister_in_path(etcd_client, path, prevValue=False):
def etcd_delete_if_exists(etcd_client, path, prevValue):
key = os.path.join(ETCD_PATH, path)
try:
etcd_client.delete(key, prevValue=prevValue)
LOG.warning("Deleted key %s, with previous value '%s'", key, prevValue)
except etcd.EtcdKeyNotFound:
LOG.warning("Key %s not exist", key)
except etcd.EtcdCompareFailed:
LOG.debug("Previous of the '%s' is not the '%s'", key, prevValue)
def etcd_deregister_in_path(etcd_client, path):
key = os.path.join(ETCD_PATH, path, IPADDR)
try:
if prevValue:
etcd_client.delete(key, prevValue=prevValue)
else:
etcd_client.delete(key, recursive=True)
etcd_client.delete(key, recursive=True)
LOG.warning("Deleted key %s", key)
except etcd.EtcdKeyNotFound:
LOG.warning("Key %s not exist", key)
@ -761,7 +770,7 @@ def main(ttl):
etcd_deregister_in_path(etcd_client, 'queue')
etcd_deregister_in_path(etcd_client, 'nodes')
etcd_deregister_in_path(etcd_client, 'seqno')
etcd_deregister_in_path(etcd_client, 'leader', prevValue=IPADDR)
etcd_delete_if_exists(etcd_client, 'leader', IPADDR)
release_lock(lock)