From 0c3f2cfebcbe1892136ef714e857960e86e42d1f Mon Sep 17 00:00:00 2001 From: "yusuke.iida" Date: Thu, 4 Sep 2025 23:29:09 +0900 Subject: [PATCH 1/2] pgsql: Fixed an issue where tmpdir was not created when rep_mode was set to slave. --- heartbeat/pgsql | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/heartbeat/pgsql b/heartbeat/pgsql index 69384f155..45cd53759 100755 --- a/heartbeat/pgsql +++ b/heartbeat/pgsql @@ -1988,6 +1988,15 @@ validate_ocf_check_level_10() { ocf_exit_reason "Replication(rep_mode=slave) does not support Master/Slave configuration." return $OCF_ERR_CONFIGURED fi + # For slave mode in PostgreSQL 12 and later, create the tmp directory to place recovery.conf. + ocf_version_cmp "$version" "12" + rc=$? + if [ $rc -eq 1 ]||[ $rc -eq 2 ]; then # PosrgreSQL 12 or later. + if ! mkdir -p $OCF_RESKEY_tmpdir || ! chown $OCF_RESKEY_pgdba $OCF_RESKEY_tmpdir || ! chmod 700 $OCF_RESKEY_tmpdir; then + ocf_exit_reason "Can't create directory $OCF_RESKEY_tmpdir or it is not readable by $OCF_RESKEY_pgdba" + return $OCF_ERR_PERM + fi + fi fi if use_replication_slot; then From cd8e58fa9a7e3ffaf3a7ddcdd75ecb051a828124 Mon Sep 17 00:00:00 2001 From: "yusuke.iida" Date: Wed, 17 Sep 2025 22:31:39 +0900 Subject: [PATCH 2/2] pgsql: Move the tmpdir creation process to the start action --- heartbeat/pgsql | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/heartbeat/pgsql b/heartbeat/pgsql index 45cd53759..db241266f 100755 --- a/heartbeat/pgsql +++ b/heartbeat/pgsql @@ -1609,6 +1609,25 @@ user_recovery_conf() { } make_recovery_conf() { + local version + + version=`cat $OCF_RESKEY_pgdata/PG_VERSION` + if [ "$OCF_RESKEY_rep_mode" = "slave" ]; then + # For slave mode in PostgreSQL 12 and later, create the tmp directory to place recovery.conf. + ocf_version_cmp "$version" "12" + rc=$? + if [ $rc -eq 1 ]||[ $rc -eq 2 ]; then # PosrgreSQL 12 or later. + if ! mkdir -p $OCF_RESKEY_tmpdir || ! chown $OCF_RESKEY_pgdba $OCF_RESKEY_tmpdir || ! chmod 700 $OCF_RESKEY_tmpdir; then + ocf_exit_reason "Can't create directory $OCF_RESKEY_tmpdir or it is not readable by $OCF_RESKEY_pgdba" + return $OCF_ERR_PERM + fi + fi + else + if ! mkdir -p $OCF_RESKEY_tmpdir || ! chown $OCF_RESKEY_pgdba $OCF_RESKEY_tmpdir || ! chmod 700 $OCF_RESKEY_tmpdir; then + ocf_exit_reason "Can't create directory $OCF_RESKEY_tmpdir or it is not readable by $OCF_RESKEY_pgdba" + return $OCF_ERR_GENERIC + fi + fi runasowner "touch $RECOVERY_CONF" if [ $? -ne 0 ]; then ocf_exit_reason "Can't create recovery.conf." @@ -1977,10 +1996,6 @@ validate_ocf_check_level_10() { fi fi fi - if ! mkdir -p $OCF_RESKEY_tmpdir || ! chown $OCF_RESKEY_pgdba $OCF_RESKEY_tmpdir || ! chmod 700 $OCF_RESKEY_tmpdir; then - ocf_exit_reason "Can't create directory $OCF_RESKEY_tmpdir or it is not readable by $OCF_RESKEY_pgdba" - return $OCF_ERR_PERM - fi fi if [ "$OCF_RESKEY_rep_mode" = "slave" ]; then @@ -1988,15 +2003,6 @@ validate_ocf_check_level_10() { ocf_exit_reason "Replication(rep_mode=slave) does not support Master/Slave configuration." return $OCF_ERR_CONFIGURED fi - # For slave mode in PostgreSQL 12 and later, create the tmp directory to place recovery.conf. - ocf_version_cmp "$version" "12" - rc=$? - if [ $rc -eq 1 ]||[ $rc -eq 2 ]; then # PosrgreSQL 12 or later. - if ! mkdir -p $OCF_RESKEY_tmpdir || ! chown $OCF_RESKEY_pgdba $OCF_RESKEY_tmpdir || ! chmod 700 $OCF_RESKEY_tmpdir; then - ocf_exit_reason "Can't create directory $OCF_RESKEY_tmpdir or it is not readable by $OCF_RESKEY_pgdba" - return $OCF_ERR_PERM - fi - fi fi if use_replication_slot; then