diff --git a/heartbeat/pgsql b/heartbeat/pgsql index 69384f155..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