From 15ce19792aff0368c6a1132420c40950f7a18577 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Thu, 19 Mar 2015 16:12:44 +0100 Subject: postgresql-setup: upgrade & avoid running old server * postgresql-setup.in (upgrade): Call old_data_in_use to ensure that the old database server is not running. (old_data_in_use): New function. ($cleaup): Rename to $failure_cleanup. * NEWS: Document. --- postgresql-setup.in | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'postgresql-setup.in') diff --git a/postgresql-setup.in b/postgresql-setup.in index 8b30d71..fd1bef2 100644 --- a/postgresql-setup.in +++ b/postgresql-setup.in @@ -175,6 +175,15 @@ initdb() } +old_data_in_use() +{ + local pidfile="$pgdataold/postmaster.pid" + test -f "$pidfile" || return 1 + error $"The pidfile '$pidfile' exists. Verify that there is no postmaster" + error_q $"running the $pgdataold directory." +} + + upgrade() { local inplace=false @@ -245,13 +254,16 @@ upgrade() pghost_override="PGHOST='$upgradefrom_pghost_override'" } - local cleanup=true - - if ! check_not_initialized; then + local failure_cleanup=true + if old_data_in_use; then + script_result=1 + # Cleanup makes sense once perform_initdb gets called. + failure_cleanup=false + elif ! check_not_initialized; then # Don't try to re-init initialized data directory and also do not # remove it after this unsuccessful upgrade. - cleanup=false script_result=1 + failure_cleanup=false elif perform_initdb; then $inplace && link_option=--link @@ -292,7 +304,7 @@ upgrade() warn $pgdataold. else # Clean up after failure. - $cleanup && rm -rf "$pgdata" + $failure_cleanup && rm -rf "$pgdata" $inplace && mv "$pgdataold" "$pgdata" error $"Upgrade failed." fi -- cgit