chatai/postgres_15.8.1.044/scripts/01-postgres_check.sh

72 lines
2.2 KiB
Bash

#!/bin/bash
#
# Scripts in this directory are run during the build process.
# each script will be uploaded to /tmp on your build droplet,
# given execute permissions and run. The cleanup process will
# remove the scripts from your build system after they have run
# if you use the build_image task.
#
echo "Commencing Checks"
function check_database_is_ready {
echo -e "\nChecking if database is ready and accepting connections:"
if [ "$(pg_isready)" = "/tmp:5432 - accepting connections" ]; then
echo "Database is ready"
else
echo "Error: Database is not ready. Exiting"
exit 1
fi
}
function check_postgres_owned_dir_exists {
DIR=$1
USER="postgres"
echo -e "\nChecking if $DIR exists and owned by postgres user:"
if [ -d "$DIR" ]; then
echo "$DIR exists"
if [ $(stat -c '%U' $DIR) = "$USER" ]; then
echo "$DIR is owned by $USER"
else
echo "Error: $DIR is not owned by $USER"
exit 1
fi
else
echo "Error: ${DIR} not found. Exiting."
exit 1
fi
}
function check_lse_enabled {
ARCH=$(uname -m)
if [ $ARCH = "aarch64" ]; then
echo -e "\nArchitecture is $ARCH. Checking for LSE:"
LSE_COUNT=$(objdump -d /usr/lib/postgresql/bin/postgres | grep -i 'ldxr\|ldaxr\|stxr\|stlxr' | wc -l)
MOUTLINE_ATOMICS_COUNT=$(nm /usr/lib/postgresql/bin/postgres | grep __aarch64_have_lse_atomics | wc -l)
# Checking for load and store exclusives
if [ $LSE_COUNT -gt 0 ]; then
echo "Postgres has LSE enabled"
else
echo "Error: Postgres failed to be compiled with LSE. Exiting"
exit 1
fi
# Checking if successfully compiled with -moutline-atomics
if [ $MOUTLINE_ATOMICS_COUNT -gt 0 ]; then
echo "Postgres has been compiled with -moutline-atomics"
else
echo "Error: Postgres failed to be compiled with -moutline-atomics. Exiting"
exit 1
fi
else
echo "Architecture is $ARCH. Not checking for LSE."
fi
}
check_database_is_ready
check_postgres_owned_dir_exists "/var/lib/postgresql"
check_postgres_owned_dir_exists "/etc/postgresql"
check_lse_enabled