diff --git a/helpers/ha.py b/helpers/ha.py index 1c2426d8..ed9f11f4 100644 --- a/helpers/ha.py +++ b/helpers/ha.py @@ -59,9 +59,7 @@ class Ha: self.state_handler.follow_the_leader(self.fetch_current_leader()) return "following a different leader because i am not the healthiest node" else: - if self.has_lock(): - self.update_lock() - + if self.has_lock() and self.update_lock() if not self.state_handler.is_leader(): self.state_handler.promote() return "promoted self to leader because i had the session lock" diff --git a/helpers/postgresql.py b/helpers/postgresql.py index 45f594a5..335fd104 100644 --- a/helpers/postgresql.py +++ b/helpers/postgresql.py @@ -89,8 +89,12 @@ class Postgresql: os.fchmod(f.fileno(), 0600) f.write('{hostname}:{port}:*:{username}:{password}\n'.format(**r)) - return os.system('PGPASSFILE={pgpass} pg_basebackup -R -D {data_dir} --host={hostname} --port={port} -U {username}'.format( - pgpass=pgpass, data_dir=self.data_dir, **r)) == 0 + try: + os.environ['PGPASSFILE'] = pgpass + return os.system('pg_basebackup -R -D {data_dir} --host={hostname} --port={port} -U {username}'.format( + data_dir=self.data_dir, **r)) == 0 + finally: + os.environ.pop('PGPASSFILE') def is_leader(self): return not self.query('SELECT pg_is_in_recovery()').fetchone()[0]