Skip to content

Commit

Permalink
Merge pull request #1303 from cfengine/ENT-10647-2/master
Browse files Browse the repository at this point in the history
ENT-10647: Fixed and improved postgresql server state handling in package scriptlets
  • Loading branch information
craigcomstock authored Sep 29, 2023
2 parents 4a9cc42 + 83c91b5 commit bb4287d
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
4 changes: 2 additions & 2 deletions packaging/common/cfengine-hub/postinstall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ init_postgres_dir()
# Started successfully, stop it again, the migration requires it to be not running.
(cd /tmp && su cfpostgres -c "$PREFIX/bin/pg_ctl -w -D $PREFIX/state/pg/data -l /var/log/postgresql.log stop") || failure=1
if [ $failure = 0 ]; then
wait_for_cfpostgres_down || failure=1
wait_for_cf_postgres_down || failure=1
fi
if [ $failure != 0 ]; then
cf_console echo "Error: unable to shutdown postgresql server. Showing last of /var/log/postgresql.log for clues."
Expand Down Expand Up @@ -703,7 +703,7 @@ do_migration() {
# Consult the last few lines of "/var/cfengine/state/pg/data/pg_upgrade_output.d/20230913T150025.959/log/pg_upgrade_server.log" for the probable cause of the failure.
cf_console echo "Showing last lines of any related log files:"
_daysearch=$(date +%Y%m%d)
find "$PREFIX"/state/pg/data/pg_upgrade_output.d -name *.log | grep "$_daysearch" | xargs tail
find "$PREFIX"/state/pg/data/pg_upgrade_output.d -name *.log | grep "$_daysearch" | cf_console xargs tail
cf_console echo
check_disk_space # will abort if low on disk space
init_postgres_dir "$new_pgconfig_file" "$pgconfig_type"
Expand Down
18 changes: 9 additions & 9 deletions packaging/common/script-templates/script-common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ restore_cfengine_state() {
}

wait_for_cf_postgres() {
# wait for CFEngine Postgresql service to be available, up to 5 sec.
# wait for CFEngine Postgresql service to be available, up to 60 sec.
# Returns 0 is psql command succeeds,
# Returns non-0 otherwise (1 if exited by timeout)
for i in $(seq 1 5); do
for i in $(seq 1 60); do
true "checking if Postgresql is available..."
if $PREFIX/bin/psql cfsettings -c "SELECT 1;" >/dev/null 2>&1; then
if cd /tmp && su cfpostgres -c "$PREFIX/bin/psql -l" >/dev/null 2>&1; then
true "Postgresql is available, moving on"
return 0
fi
Expand All @@ -96,25 +96,25 @@ wait_for_cf_postgres() {
done
# Note: it is important that this is the last command of this function.
# Return code of `psql` is the return code of whole function.
$PREFIX/bin/psql cfsettings -c "SELECT 1;" >/dev/null 2>&1
cd /tmp && su cfpostgres -c "$PREFIX/bin/psql -l" >/dev/null 2>&1
}

wait_for_cf_postgres_down() {
# wait for CFEngine Postgresql service to be shutdown, up to 5 sec.
# wait for CFEngine Postgresql service to be shutdown, up to 60 sec.
# Returns 0 if postgresql service is not running
# Returns non-0 otherwise (1 if exited by timeout)
for i in $(seq 1 5); do
for i in $(seq 1 60); do
true "checking if Postgresql is shutdown..."
if ! "$PREFIX"/bin/pg_isready >/dev/null 2>&1; then
if cd /tmp && ! su cfpostgres -c "$PREFIX/bin/psql -l" >/dev/null 2>&1; then
true "Postgresql is shutdown, moving on"
return 0
fi
true "waiting 1 sec for Postgresql to shutdown..."
sleep 1
done
# Note: it is important that this is the last command of this function.
# Return code of `pg_isready` is the return code of whole function.
! "$PREFIX"/bin/pg_isready >/dev/null 2>&1
# Return code of `psql` is the return code of whole function.
cd /tmp && ! su cfpostgres -c "$PREFIX/bin/psql -l" >/dev/null 2>&1
}

safe_cp() {
Expand Down

0 comments on commit bb4287d

Please sign in to comment.