From e9a5d25ef3920a846ae58ca20d3ef134f26c51c0 Mon Sep 17 00:00:00 2001 From: Alexander Date: Fri, 23 Aug 2019 18:03:02 +0300 Subject: [PATCH] Synchronous commit is disabled for rewind user GRANTs (#1145) SET local synchronous_commit = 'local' before running GRANT --- patroni/postgresql/bootstrap.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/patroni/postgresql/bootstrap.py b/patroni/postgresql/bootstrap.py index 6e8617b9..78c8c98a 100644 --- a/patroni/postgresql/bootstrap.py +++ b/patroni/postgresql/bootstrap.py @@ -344,8 +344,12 @@ END;$$""".format(name, ' '.join(options)) self.create_or_update_role(rewind['username'], rewind.get('password'), []) for f in ('pg_ls_dir(text, boolean, boolean)', 'pg_stat_file(text, boolean)', 'pg_read_binary_file(text)', 'pg_read_binary_file(text, bigint, bigint, boolean)'): - postgresql.query('GRANT EXECUTE ON function pg_catalog.{0} TO "{1}"' - .format(f, rewind['username'])) + sql = """DO $$ +BEGIN + SET local synchronous_commit = 'local'; + GRANT EXECUTE ON function pg_catalog.{0} TO "{1}"; +END;$$""".format(f, rewind['username']) + postgresql.query(sql) for name, value in (config.get('users') or {}).items(): if all(name != a.get('username') for a in (superuser, replication, rewind)):