#!/sbin/openrc-run extra_started_commands="reload" depend() { use net after postgresql } get_config() { [ -f "${INIFILE}" ] || eend 1 "'${INIFILE}' not found" eval echo $(sed -e 's:;.*::' "${INIFILE}" | \ awk '$1 == "'$1'" { print ($2 == "=" ? $3 : $2) }') } PIDFILE="$(get_config pidfile)" UNIX_SOCKET_DIR="$(get_config unix_socket_dir)" prep() { if [ -n "${UNIX_SOCKET_DIR}" ] ; then checkpath -o postgres:postgres -m 0775 -d "${UNIX_SOCKET_DIR}" \ || return 1 fi checkpath -o pgbouncer:postgres -m 0755 -d "$(dirname ${PIDFILE})" \ || return 1 checkpath -o pgbouncer:postgres -m 0644 -f "${PIDFILE}" \ || return 1 checkpath -o pgbouncer:postgres -m 0755 -d "$(dirname $(get_config logfile))" \ || return 1 checkpath -o pgbouncer:postgres -m 0640 -f "$(get_config logfile)" \ || return 1 return 0 } start() { ebegin "Starting PgBouncer" prep local ret=$? if [ $ret -ne 0 ] ; then eend $ret exit $ret fi start-stop-daemon --start \ --pidfile ${PIDFILE} \ --user pgbouncer \ --exec /usr/bin/pgbouncer -- -q -d "${INIFILE}" eend $? } stop() { local seconds=$(( ${NICE_TIMEOUT} + ${FORCE_QUIT_TIMEOUT} )) ebegin "Stopping PgBouncer (this can take up to ${seconds} seconds)" local retries=SIGINT/${NICE_TIMEOUT} if [ "${FORCE_QUIT}" = "YES" ] ; then einfo "FORCE_QUIT enabled." retries="${retries}/SIGTERM/${FORCE_QUIT_TIMEOUT}" fi # Loops through nice and force quit in one go. start-stop-daemon --stop \ --pidfile ${PIDFILE} \ --retry ${retries} eend $? } restart() { if [ -n "${UNIX_SOCKET_DIR}" ] ; then ebegin "Performing online restart of PgBouncer" start-stop-daemon --start \ --pidfile ${PIDFILE} \ --user pgbouncer \ --exec /usr/bin/pgbouncer -- -q -d -R "${INIFILE}" eend $? else stop && start fi } reload() { ebegin "Reloading PgBouncer configuration from '${INIFILE}'" start-stop-daemon --signal HUP --pidfile ${PIDFILE} eend $? }