Don't demote master if failed to update leader key in pause (#668)

Fixes https://github.com/zalando/patroni/issues/659
This commit is contained in:
Alexander Kukushkin
2018-05-18 11:19:56 +02:00
committed by GitHub
parent 5ce18a8045
commit ed479fe585
2 changed files with 10 additions and 0 deletions
+2
View File
@@ -771,6 +771,8 @@ class Ha(object):
# Either there is no connection to DCS or someone else acquired the lock
logger.error('failed to update leader lock')
if self.state_handler.is_leader():
if self.is_paused():
return 'continue to run as master after failing to update leader lock in DCS'
self.demote('immediate-nolock')
return 'demoted self because failed to update leader lock in DCS'
else:
+8
View File
@@ -623,6 +623,14 @@ class TestHa(unittest.TestCase):
self.ha.cluster = get_cluster_initialized_with_leader(Failover(0, '', self.p.name, None))
self.assertEquals(self.ha.run_cycle(), 'PAUSE: waiting to become master after promote...')
def test_failed_to_update_lock_in_pause(self):
self.ha.update_lock = false
self.ha.is_paused = true
self.p.name = 'leader'
self.ha.cluster = get_cluster_initialized_with_leader()
self.assertEquals(self.ha.run_cycle(),
'PAUSE: continue to run as master after failing to update leader lock in DCS')
def test_postgres_unhealthy_in_pause(self):
self.ha.is_paused = true
self.p.is_healthy = false