From 27324c20990e7866958b64492daf2bd0821a3b59 Mon Sep 17 00:00:00 2001 From: Bobbie Soedirgo Date: Thu, 12 Sep 2024 15:40:31 +0100 Subject: [PATCH] fix: disable client connections during upgrade --- .../files/admin_api_scripts/pg_upgrade_scripts/common.sh | 6 ++++++ .../files/admin_api_scripts/pg_upgrade_scripts/initiate.sh | 3 +++ 2 files changed, 9 insertions(+) diff --git a/ansible/files/admin_api_scripts/pg_upgrade_scripts/common.sh b/ansible/files/admin_api_scripts/pg_upgrade_scripts/common.sh index be14d212a..8b0ee61d2 100755 --- a/ansible/files/admin_api_scripts/pg_upgrade_scripts/common.sh +++ b/ansible/files/admin_api_scripts/pg_upgrade_scripts/common.sh @@ -88,6 +88,10 @@ CI_start_postgres() { swap_postgres_and_supabase_admin() { run_sql <<'EOSQL' +alter database postgres connection limit 0; +select pg_terminate_backend(pid) from pg_stat_activity where backend_type = 'client backend' and pid != pg_backend_pid(); +EOSQL + run_sql <<'EOSQL' set statement_timeout = '300s'; begin; create role supabase_tmp superuser; @@ -509,6 +513,8 @@ begin end $$; +alter database postgres connection limit -1; + set session authorization supabase_admin; drop role supabase_tmp; commit; diff --git a/ansible/files/admin_api_scripts/pg_upgrade_scripts/initiate.sh b/ansible/files/admin_api_scripts/pg_upgrade_scripts/initiate.sh index 7c5abfdae..ca3548034 100755 --- a/ansible/files/admin_api_scripts/pg_upgrade_scripts/initiate.sh +++ b/ansible/files/admin_api_scripts/pg_upgrade_scripts/initiate.sh @@ -125,6 +125,9 @@ cleanup() { echo "Removing SUPERUSER grant from postgres" run_sql -c "ALTER USER postgres WITH NOSUPERUSER;" + echo "Resetting postgres database connection limit" + run_sql -c "ALTER DATABASE postgres CONNECTION LIMIT -1;" + if [ -z "$IS_CI" ] && [ -z "$IS_LOCAL_UPGRADE" ]; then echo "Unmounting data disk from ${MOUNT_POINT}" umount $MOUNT_POINT