Compare commits

..

77 Commits

Author SHA1 Message Date
Ian Barwick
739bbe9a54 autoreconf run 2022-10-17 16:11:34 +09:00
Ian Barwick
ba0b8a1692 doc: update release notes 2022-10-17 14:16:15 +09:00
Ian Barwick
f002ceeae6 Disable exclusive backup check in PostgreSQL 15 and later
Exclusive backup functionality was removed in core commit 39969e2a
so we can and must avoid checking for exclusive backups.
2022-10-17 11:12:06 +09:00
Ian Barwick
64228c5a74 Bump version number
5.3.3
2022-10-17 11:05:10 +09:00
Ian Barwick
9264680bdc repmgr: add code comment about pg_stat_tmp in PostgreSQL 15+
See core commit 6f0cf8787.
2022-10-17 10:19:42 +09:00
Ian Barwick
99c3b42921 shared library: remove redundant code
This has never actually served any purpose; see core commit ab02d702ef.
2022-10-17 10:16:52 +09:00
Ian Barwick
3c0d643466 shared library: update for PostgreSQL 15
Core commit 4f2400cb3f adds shmem_request_hook, meaning the
memory initialization previously carried out in _PG_init() needs
to be handled in that hook.
2022-10-17 10:16:48 +09:00
Ian Barwick
6149e4c7b0 doc: update compatibility matrix for repmgr 5.3 / PostgreSQL 15 2022-10-17 10:04:54 +09:00
Ian Barwick
5e75707d4e doc: clarify failover behaviour when node priority is zero
Make it clear the node will not be promoted under any circumstances.
2022-09-20 09:36:25 +09:00
Ian Barwick
8e5698f16e repmgrd: ensure notification script is called for "repmgrd_upstream_disconnect"
GitHUb #760.
2022-09-02 17:20:13 +09:00
Ian Barwick
3d08800521 doc: update note about pg_rewind corner-case bug
Sadly it's likely there are still installations running PostgreSQL
versions released prior to February 2021, so keep the note there
for now.
2022-07-14 10:18:25 +09:00
Ian Barwick
e64184aff3 doc: mention full_page_writes as prerequisite for pg_rewind
Anyone disabling it needs to examine their life choices, but as
we check for it anyway, might as well explicitly mention it for
completeness.
2022-07-14 09:49:03 +09:00
Ian Barwick
8c031e2b05 Replace some appendPQExpBuffer occurrences with appendPQExpBufferStr 2022-07-14 09:15:56 +09:00
Ian Barwick
3a157465ce repmgr: update README
- update current version
- remove reference to upgrading from 3.x
2022-07-06 09:40:13 +09:00
Ian Barwick
70da9e8a53 Update Makefile
Re-add $(LIBS), previously removed in 9d7eebef.

While not required for internal builds, per GitHub #755 this may be
required in some environments.
2022-06-03 10:28:12 +09:00
Ian Barwick
6602a98f2e doc: clarifications for upgrade process 2022-05-26 10:17:32 +09:00
Ian Barwick
b6ba0c3d45 Finalize 5.3.2 release 2022-05-25 15:59:51 +09:00
Ian Barwick
e4d6e2cd11 Add 5.3.2 release date 2022-05-25 14:03:04 +09:00
Ian Barwick
a28b6641b8 doc: update release notes 2022-05-25 14:01:51 +09:00
Ian Barwick
78d2acf204 doc: update release notes 2022-05-25 13:56:59 +09:00
Ian Barwick
b3d52c4332 shared library: remove redundant code
This has never actually served any purpose; see core commit ab02d702ef.
2022-05-17 19:56:48 +09:00
Ian Barwick
72ae977d0d Bump version number
5.3.2
2022-05-17 09:38:40 +09:00
Ian Barwick
599351eea8 Ensure replication slots can be dropped by a replication-only user
If the repmgr user is a non-superuser, and a replication-only user exists,
ensure redundant replication slots are dropped correctly.
2022-05-16 16:38:02 +09:00
Ian Barwick
fca2b3ade7 doc: update release notes 2022-05-16 12:05:55 +09:00
Ian Barwick
89ba005726 repmgrd: improve walsender disable check
Specifically, don't attempt to disable walsenders if "standby_disconnect_on_failover"
is "true", but the repmgr user is not a superuser.

This restriction can be lifted from PostgreSQL 15.
2022-05-16 11:53:15 +09:00
Ian Barwick
5ddf450919 dbutils: move get_wal_receiver_pid() to a more consistent location 2022-05-16 10:41:31 +09:00
Ian Barwick
20342bb8ee doc: expand non-superuser permissions explanation
Information about using repmgr with a non-superuser was spread
throughout individual documentation systems; this commit creates
an overview of requirements and potential issues.
2022-05-13 14:30:09 +09:00
Ian Barwick
ea36c5dde3 doc: clarify permissions requirements in "standby switchover" 2022-05-13 14:26:50 +09:00
Ian Barwick
fc72e0bf93 doc: clarify permissions requirements in "standby clone" 2022-05-13 14:26:44 +09:00
Ian Barwick
b10e9b89dd standby clone: update source comment 2022-05-13 13:39:23 +09:00
Ian Barwick
a7d87d5992 doc: add missing short form option to "standby clone" 2022-05-13 11:56:06 +09:00
Ian Barwick
015c0c8458 dbutils.c: fix typo in comment 2022-05-13 11:56:02 +09:00
Ian Barwick
474d85d647 repmgr: fix error message
It's possible the missing node record might be for a witness server,
though we have no way of knowing that.
2022-05-11 14:57:34 +09:00
zhouhj43183
207057a159 repmgrd: ensure witness node marked active
Previously, if the witness node's PostgreSQL was unreachable, it would
be marked as "inactive" on the primary, and under some circumstances
would not be corrected to "active" once the witness node's PostgreSQL
came back.

PR #754; some modifications by Ian Barwick.
2022-05-11 13:36:46 +09:00
Ian Barwick
65d796ee3e doc: update release notes
Add notes about when PostgreSQL and/or repmgrd restart required.

GitHub #752.
2022-05-10 16:23:50 +09:00
Ian Barwick
0fb4c0930a doc: update release notes 2022-05-10 16:09:46 +09:00
Ian Barwick
cee3b8446a standby clone: don't error out if unable to determine cluster size
The cluster size check is purely informative, and is not in any way
essential for the standby clone operation. As it's possible the query
may fail if the repmgr user does not have sufficient privileges to
query all databases in the cluster, we can simply ignore any failure.

Note that the code comment indicated the query also served to sanity-
check that queries can actually be executed. While this was the case
historically, the preceding server version check now serves the same
purpose and will not have the same risk of failure due to missing
permissions.
2022-05-10 15:08:57 +09:00
Ian Barwick
90a700c7c0 node check: prevent WARNING in --downstream --nagios output 2022-04-20 17:46:39 +09:00
Ian Barwick
cc4475b8e2 node check: fix --downstream --nagios output
Ensure the performance data output (the bit after the pipe) contains
information in a pareseable format.

GitHub #749.
2022-04-20 17:46:34 +09:00
Ian Barwick
9f1c9ef829 node check: tweak --upstream --nagios output
No data follows the pipe, so omit it and add missing line break.
2022-04-20 17:46:27 +09:00
Ian Barwick
2a05f495f6 doc: fix XML error 2022-04-19 11:26:01 +09:00
Felix Dreissig
d342acfefe Doc: Update or remove references to recovery.conf
The recovery.conf file is not present anymore for Postgres >= 12.

PR 748.
2022-04-19 11:09:26 +09:00
Felix Dreissig
2f27fec510 Sample config: Update link to docs 2022-04-19 11:09:21 +09:00
James Stroud
a80ee17b6c Update install-packages.xml postgres 14 and not 11
Hi, I think you had a typo, you meant to say Postgres 14 and not 11.  If am wrong just ignore, thanks and take care James Stroud
2022-03-31 16:03:41 +09:00
Ian Barwick
595494f8a1 doc: use "note" rather than "important" 2022-03-16 10:40:51 +09:00
Ian Barwick
3ca4c273fa doc: update witness server notes
- clarify that a separate PostgreSQL instance is needed for each
  witness server
- remove historical 3.x reference
2022-03-16 10:33:56 +09:00
Ian Barwick
41f0688f69 docs: update package installation instructions
- use "dnf" in place of "yum"
- mention Rocky Linux
- remove 9.6 examples
2022-03-11 10:30:02 +09:00
Ian Barwick
78be15b06c docs: update one more instance of the company name 2022-02-15 16:21:43 +09:00
Ian Barwick
f02be50118 docs: update other instances of the company name, where appropriate 2022-02-15 16:14:31 +09:00
Ian Barwick
ac62101dc0 docs: update company name on cover pages 2022-02-15 16:01:51 +09:00
Ian Barwick
78cc278639 docs: finalize release notes 2022-02-15 13:38:24 +09:00
Ian Barwick
ceb65027c6 Bump version number 2022-02-04 09:08:04 +09:00
Ian Barwick
e6caa14ea2 Bump version number
5.3.1
2022-02-03 14:48:47 +09:00
Ian Barwick
88a11f36ca Add include for pwd.h
This was previously included via the PostgreSQL source, but that
seems to have gone away in recent HEAD builds.
2022-02-03 14:32:18 +09:00
Ian Barwick
7f371b11a5 doc: update version matrix
5.2.1 is the latest release in the 5.2.x series.
2022-02-03 13:30:29 +09:00
Ian Barwick
349eacd4b7 doc: update release notes 2022-02-03 13:29:32 +09:00
Ian Barwick
9f2afe9643 Fix upgrade paths from 4.1 ~ 4.3 to 5.2 and later
A number of C functions were added in releases 4.2 to 4.4; however
these were renamed in 5.3 to prevent naming clashes with other
extensions.

This does however mean that when upgrading from one of the above
versions, the intermediate upgrade steps will attempt to create
SQL functions referencing C functions which no longer exist in
repmgr.so, and hence cause the upgrade to fail.

We can work around this by providing empty upgrade scripts
from these versions to 4.4, which skip the problematic CREATE
FUNCTION commands. The functions will be correctly created in
the 5.2--5.3 upgrade script.
2022-02-03 13:29:25 +09:00
Ian Barwick
356f65531f repmgrd: move connection pointer declaration inside relevant block
As it's used only there and nowhere else.
2022-01-04 12:46:50 +09:00
Ian Barwick
2a7579c770 doc: update release notes 2022-01-04 12:33:30 +09:00
zhouhj43183
820d972d41 repmgrd: ensure potentially open connections are closed
When recovering from degraded state in local node monitoring, in some
cases a new connection was opened to the local node without closing
the old one, which will result in memory leakage.
2022-01-04 12:24:42 +09:00
Ian Barwick
d0add49c84 doc: update repmgr.conf.sample
Minor formatting fix.
2021-12-08 09:52:27 +09:00
Ian Barwick
9a84fa84f9 doc: update repmgr.conf.sample
Remove bogus -W option in "repmgr standby follow" example invocation
for the "follow_command" parameter.

The option (which corresponds to "--no-wait") is not used by
"repmgr standby follow".

Per report from Jimmy Angelakos.
2021-12-08 09:52:22 +09:00
Ian Barwick
ff2c56f5cb doc: fix typo 2021-11-05 09:14:19 +09:00
Ian Barwick
3b860bad80 Removed temporary include file workaround 2021-10-29 15:44:16 +09:00
Ian Barwick
70c79aeaec Add dummy include file
This is a workaround required to facilitate Debian package builds
against PostgreSQL Extended.
2021-10-12 16:50:33 +09:00
Ian Barwick
afd876377c doc: repmgr 5.2 is no longer supported. 2021-10-12 14:05:41 +09:00
Ian Barwick
277910cb31 Fix version number 2021-10-12 13:50:22 +09:00
Ian Barwick
9554154677 doc: update version matrix 2021-10-12 13:49:28 +09:00
Ian Barwick
2bbfb5daa0 doc: update release notes 2021-10-12 10:13:26 +09:00
Ian Barwick
82b0e85a66 Bump version number 2021-10-12 10:11:27 +09:00
Ian Barwick
3320eb0983 repmgrd: improve node activation at startup
Commit 79d1f00 modified repmgrd to automatically set an inactive node
to "active" at startup.

However we need to avoid doing that for cases where the node role has
changed (e.g. a former primary was recloned as a standby) but the node
record was not updated.
2021-10-11 14:39:14 +09:00
Ian Barwick
7862941300 repmgrd: add %p event notification parameter for "repmgrd_failover_promote"
This enables an event notification script to identify the former primary
node.
2021-09-28 10:25:45 +09:00
Ian Barwick
f152fc3016 Add --repmgrd option to "repmgr node check"
This provides a simple way for checking whether the node's repmgrd is
running.

GitHub #719.
2021-09-28 09:46:54 +09:00
Ian Barwick
9c260e605d Update Makefile 2021-09-16 17:17:20 +09:00
Ian Barwick
7ad06530e4 doc: update 5.3.0 release notes 2021-09-16 17:15:58 +09:00
Ian Barwick
c787273f91 Add extension script for unpackaged upgrades to 5.3 2021-09-16 13:55:56 +09:00
Ian Barwick
d40055c8dd doc: update 5.3.0 release notes 2021-09-16 13:42:34 +09:00
21 changed files with 175 additions and 361 deletions

View File

@@ -1,37 +0,0 @@
name: SonarQube Scan
on:
pull_request:
push:
branches: [ master ]
workflow_dispatch:
jobs:
sonarQube:
name: SonarQube-Job
runs-on: ubuntu-latest
steps:
- name: Checkout source repo
uses: actions/checkout@v1
with:
ref: '${{ github.head_ref }}'
- name: Checkout GitHub Action Repo
uses: actions/checkout@master
with:
repository: EnterpriseDB/edb-github-actions.git
ref: master
token: ${{ secrets.GH_SLONIK }}
path: .github/actions/edb-github-actions
- name: SonarQube Scan
uses: ./.github/actions/edb-github-actions/sonarqube
with:
REPO_NAME: '${{github.event.repository.name}}'
SONAR_PROJECT_KEY: EnterpriseDB_repmgr
SONAR_URL: '${{secrets.SONARQUBE_URL}}'
SONAR_LOGIN: '${{secrets.SONARQUBE_LOGIN}}'
PULL_REQUEST_KEY: '${{github.event.number}}'
PULL_REQUEST_BRANCH: '${{github.head_ref}}'
PULL_REQUEST_BASE_BRANCH: '${{github.base_ref}}'
REPO_DEFAULT_BRANCH: '${{github.event.repository.default_branch}}'
REPO_EXCLUDE_FILES: '*properties*,**/src/test/**/*,**/*.sql,**/docs/**/*,**/*/*.java'

View File

@@ -1,18 +0,0 @@
#!/bin/bash
DEBIAN_FRONTEND=noninteractive sudo apt-get -y install debhelper curl autoconf zlib1g-dev \
libedit-dev libxml2-dev libxslt1-dev libkrb5-dev libssl-dev libpam0g-dev systemtap-sdt-dev \
libselinux1-dev build-essential bison apt-utils lsb-release devscripts \
software-properties-common git shellcheck flex
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install libpq-dev postgresql-13 postgresql-server-dev-13
./configure
export PG_CONFIG=/usr/bin/pg_config
/home/buildfarm/sonar/depends/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir build_wrapper_output_directory make

11
HISTORY
View File

@@ -1,8 +1,15 @@
5.3.2 2022-??-?? 5.3.3 2022-10-17
Support for PostgreSQL added
repmgrd: ensure event notification script is called for event
"repmgrd_upstream_disconnect"; GitHub #760 (Ian)
5.3.2 2022-05-25
standby clone: don't error out if unable to determine cluster size (Ian) standby clone: don't error out if unable to determine cluster size (Ian)
node check: fix --downstream --nagios output; GitHub #749 (Ian) node check: fix --downstream --nagios output; GitHub #749 (Ian)
repmgrd: ensure witness node marked active (hslightdb) repmgrd: ensure witness node marked active (hslightdb)
repmgrd: improve walsender disable check (Ian) repmgrd: improve walsender disable check (Ian)
general: ensure replication slots can be dropped by a
replication-only user (Ian)
5.3.1 2022-02-15 5.3.1 2022-02-15
repmgrd: fixes for potential connection leaks (hslightdb) repmgrd: fixes for potential connection leaks (hslightdb)
@@ -67,7 +74,7 @@
"standby clone" (Ian) "standby clone" (Ian)
repmgr: add --upstream option to "node check" repmgr: add --upstream option to "node check"
repmgr: report error code on follow/rejoin failure due to non-available repmgr: report error code on follow/rejoin failure due to non-available
0 replication slot (Ian) replication slot (Ian)
repmgr: ensure "node rejoin" checks for available replication slots (Ian) repmgr: ensure "node rejoin" checks for available replication slots (Ian)
repmgr: improve "standby switchover" completion checks (Ian) repmgr: improve "standby switchover" completion checks (Ian)
repmgr: add replication configuration file ownership check to repmgr: add replication configuration file ownership check to

View File

@@ -30,9 +30,7 @@ DATA = \
repmgr--5.1--5.2.sql \ repmgr--5.1--5.2.sql \
repmgr--5.2.sql \ repmgr--5.2.sql \
repmgr--5.2--5.3.sql \ repmgr--5.2--5.3.sql \
repmgr--5.3.sql \ repmgr--5.3.sql
repmgr--5.3--5.4.sql \
repmgr--5.4.sql
REGRESS = repmgr_extension REGRESS = repmgr_extension
@@ -81,10 +79,10 @@ configfile-scan.c: configfile-scan.l
$(REPMGR_CLIENT_OBJS): repmgr-client.h repmgr_version.h $(REPMGR_CLIENT_OBJS): repmgr-client.h repmgr_version.h
repmgr: $(REPMGR_CLIENT_OBJS) repmgr: $(REPMGR_CLIENT_OBJS)
$(CC) $(CFLAGS) $(REPMGR_CLIENT_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X) $(CC) $(CFLAGS) $(REPMGR_CLIENT_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
repmgrd: $(REPMGRD_OBJS) repmgrd: $(REPMGRD_OBJS)
$(CC) $(CFLAGS) $(REPMGRD_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X) $(CC) $(CFLAGS) $(REPMGRD_OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X)
$(REPMGR_CLIENT_OBJS): $(HEADERS) $(REPMGR_CLIENT_OBJS): $(HEADERS)
$(REPMGRD_OBJS): $(HEADERS) $(REPMGRD_OBJS): $(HEADERS)

View File

@@ -7,8 +7,8 @@ replication capabilities with utilities to set up standby servers, monitor
replication, and perform administrative tasks such as failover or switchover replication, and perform administrative tasks such as failover or switchover
operations. operations.
The most recent `repmgr` version (5.2.1) supports all PostgreSQL versions from The most recent `repmgr` version (5.3.2) supports all PostgreSQL versions from
9.5 to 13. PostgreSQL 9.4 is also supported, with some restrictions. 9.5 to 14. PostgreSQL 9.4 is also supported, with some restrictions.
`repmgr` is distributed under the GNU GPL 3 and maintained by EnterpriseDB. `repmgr` is distributed under the GNU GPL 3 and maintained by EnterpriseDB.
@@ -19,14 +19,6 @@ The full `repmgr` documentation is available here:
> [repmgr documentation](https://repmgr.org/docs/current/index.html) > [repmgr documentation](https://repmgr.org/docs/current/index.html)
The old `README` file for `repmgr` 3.x is available here:
> https://github.com/EnterpriseDB/repmgr/blob/REL3_3_STABLE/README.md
Note that the `repmgr` 3.x series is no longer supported and contains known bugs;
please upgrade to the [current repmgr version](https://repmgr.org/docs/current/appendix-release-notes.html)
as soon as possible.
Versions Versions
-------- --------

22
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for repmgr 5.4.0. # Generated by GNU Autoconf 2.69 for repmgr 5.3.3.
# #
# Report bugs to <repmgr@googlegroups.com>. # Report bugs to <repmgr@googlegroups.com>.
# #
@@ -11,7 +11,7 @@
# This configure script is free software; the Free Software Foundation # This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it. # gives unlimited permission to copy, distribute and modify it.
# #
# Copyright (c) 2010-2021, EnterpriseDB Corporation # Copyright (c) 2010-2022, EnterpriseDB Corporation
## -------------------- ## ## -------------------- ##
## M4sh Initialization. ## ## M4sh Initialization. ##
## -------------------- ## ## -------------------- ##
@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='repmgr' PACKAGE_NAME='repmgr'
PACKAGE_TARNAME='repmgr' PACKAGE_TARNAME='repmgr'
PACKAGE_VERSION='5.4.0' PACKAGE_VERSION='5.3.3'
PACKAGE_STRING='repmgr 5.4.0' PACKAGE_STRING='repmgr 5.3.3'
PACKAGE_BUGREPORT='repmgr@googlegroups.com' PACKAGE_BUGREPORT='repmgr@googlegroups.com'
PACKAGE_URL='https://repmgr.org/' PACKAGE_URL='https://repmgr.org/'
@@ -1181,7 +1181,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures repmgr 5.4.0 to adapt to many kinds of systems. \`configure' configures repmgr 5.3.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1242,7 +1242,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of repmgr 5.4.0:";; short | recursive ) echo "Configuration of repmgr 5.3.3:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1316,14 +1316,14 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
repmgr configure 5.4.0 repmgr configure 5.3.3
generated by GNU Autoconf 2.69 generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc. Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it. gives unlimited permission to copy, distribute and modify it.
Copyright (c) 2010-2021, EnterpriseDB Corporation Copyright (c) 2010-2022, EnterpriseDB Corporation
_ACEOF _ACEOF
exit exit
fi fi
@@ -1335,7 +1335,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by repmgr $as_me 5.4.0, which was It was created by repmgr $as_me 5.3.3, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@@ -2487,7 +2487,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by repmgr $as_me 5.4.0, which was This file was extended by repmgr $as_me 5.3.3, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -2550,7 +2550,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
repmgr config.status 5.4.0 repmgr config.status 5.3.3
configured by $0, generated by GNU Autoconf 2.69, configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@@ -1,6 +1,6 @@
AC_INIT([repmgr], [5.4.0], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/]) AC_INIT([repmgr], [5.3.3], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/])
AC_COPYRIGHT([Copyright (c) 2010-2021, EnterpriseDB Corporation]) AC_COPYRIGHT([Copyright (c) 2010-2022, EnterpriseDB Corporation])
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)

View File

@@ -4616,17 +4616,17 @@ drop_replication_slot_replprot(PGconn *repl_conn, char *slot_name)
initPQExpBuffer(&query); initPQExpBuffer(&query);
appendPQExpBuffer(&query, appendPQExpBuffer(&query,
"DROP_REPLICATION_SLOT %s", "DROP_REPLICATION_SLOT %s;",
slot_name); slot_name);
log_verbose(LOG_DEBUG, "drop_replication_slot_replprot():\n %s", query.data); log_verbose(LOG_DEBUG, "drop_replication_slot_replprot():\n %s", query.data);
res = PQexec(repl_conn, query.data); res = PQexec(repl_conn, query.data);
if (PQresultStatus(res) != PGRES_TUPLES_OK) if (PQresultStatus(res) != PGRES_TUPLES_OK || !PQntuples(res))
{ {
log_db_error(repl_conn, query.data, log_db_error(repl_conn, query.data,
_("drop_replication_slot_sql(): unable to drop replication slot \"%s\""), _("drop_replication_slot_replprot(): unable to drop replication slot \"%s\""),
slot_name); slot_name);
success = false; success = false;

View File

@@ -16,12 +16,45 @@
</para> </para>
<!-- remember to update the release date in ../repmgr_version.h.in --> <!-- remember to update the release date in ../repmgr_version.h.in -->
<sect1 id="release-5.3.3">
<title id="release-current">Release 5.3.3</title>
<para><emphasis>Mon 17 October, 2022</emphasis></para>
<para>
&repmgr; 5.3.3 is a minor release providing support for
<ulink url="https://www.postgresql.org/docs/15/release-15.html">PostgreSQL 15</ulink>
and a &repmgrd; bug fix.
</para>
<para>
If upgrading from an earlier &repmgr; version, any running &repmgrd; instances should be restarted.
</para>
<para>
If upgrading from &repmgr; 5.2.1 or earlier, a PostgreSQL restart <emphasis>is</emphasis> required.
</para>
<sect2>
<title>Bug fixes</title>
<para>
<itemizedlist>
<listitem>
<para>
&repmgrd;: ensure <link linkend="event-notifications">event notification</link> script is called for event
<literal>repmgrd_upstream_disconnect</literal>. GitHub #760.
</para>
</listitem>
</itemizedlist>
</para>
</sect2>
</sect1>
<sect1 id="release-5.3.2"> <sect1 id="release-5.3.2">
<title id="release-current">Release 5.3.2</title> <title>Release 5.3.2</title>
<para><emphasis>??? ??? ???, 2022</emphasis></para> <para><emphasis>Wed 25 May, 2022</emphasis></para>
<para> <para>
&repmgr; 5.3.2 is a minor release. &repmgr; 5.3.2 is a minor release.
</para> </para>
<para>
Any running &repmgrd; instances should be restarted following this upgrade.
</para>
<para> <para>
If upgrading from &repmgr; 5.2.1 or earlier, a PostgreSQL restart <emphasis>is</emphasis> required. If upgrading from &repmgr; 5.2.1 or earlier, a PostgreSQL restart <emphasis>is</emphasis> required.
</para> </para>
@@ -61,6 +94,13 @@
&repmgr; is a superuser before attempting to disable the WAL receiver. &repmgr; is a superuser before attempting to disable the WAL receiver.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
If the &repmgr; user is a non-superuser, and a replication-only user exists,
ensure redundant replication slots are dropped correctly even
if the <option>-S/--superuser</option> option is not provided.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</para> </para>
</sect2> </sect2>
@@ -203,7 +243,8 @@
risk of clashes with other shared libraries. risk of clashes with other shared libraries.
</para> </para>
<para> <para>
This does not affect user-facing SQL functions. Howe This does not affect user-facing SQL functions. However an upgrade
of the installed extension version is required.
</para> </para>
</listitem> </listitem>

View File

@@ -108,6 +108,9 @@
<entry> <entry>
Supported PostgreSQL versions Supported PostgreSQL versions
</entry> </entry>
<entry>
Notes
</entry>
</row> </row>
</thead> </thead>
@@ -123,7 +126,10 @@
<link linkend="release-current">&repmgrversion;</link> (&releasedate;) <link linkend="release-current">&repmgrversion;</link> (&releasedate;)
</entry> </entry>
<entry> <entry>
9.4, 9.5, 9.6, 10, 11, 12, 13, 14 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15
</entry>
<entry>
PostgreSQL 15 supported from &repmgr; 5.3.3
</entry> </entry>
</row> </row>
@@ -140,6 +146,9 @@
<entry> <entry>
9.4, 9.5, 9.6, 10, 11, 12, 13 9.4, 9.5, 9.6, 10, 11, 12, 13
</entry> </entry>
<entry>
&nbsp;
</entry>
</row> </row>
<row> <row>
@@ -155,6 +164,9 @@
<entry> <entry>
9.3, 9.4, 9.5, 9.6, 10, 11, 12 9.3, 9.4, 9.5, 9.6, 10, 11, 12
</entry> </entry>
<entry>
&nbsp;
</entry>
</row> </row>
<row> <row>
@@ -170,6 +182,9 @@
<entry> <entry>
9.3, 9.4, 9.5, 9.6, 10, 11, 12 9.3, 9.4, 9.5, 9.6, 10, 11, 12
</entry> </entry>
<entry>
&nbsp;
</entry>
</row> </row>
@@ -186,6 +201,9 @@
<entry> <entry>
9.3, 9.4, 9.5, 9.6, 10, 11 9.3, 9.4, 9.5, 9.6, 10, 11
</entry> </entry>
<entry>
&nbsp;
</entry>
</row> </row>
<row> <row>
@@ -201,6 +219,9 @@
<entry> <entry>
9.3, 9.4, 9.5, 9.6 9.3, 9.4, 9.5, 9.6
</entry> </entry>
<entry>
&nbsp;
</entry>
</row> </row>
<row> <row>
@@ -216,6 +237,9 @@
<entry> <entry>
9.0, 9.1, 9.2, 9.3, 9.4 9.0, 9.1, 9.2, 9.3, 9.4
</entry> </entry>
<entry>
&nbsp;
</entry>
</row> </row>
</tbody> </tbody>

View File

@@ -271,6 +271,10 @@
data checksums were enabled when the cluster was initialized. See the data checksums were enabled when the cluster was initialized. See the
<ulink url="https://www.postgresql.org/docs/current/app-pgrewind.html"><command>pg_rewind</command> documentation</ulink> for details. <ulink url="https://www.postgresql.org/docs/current/app-pgrewind.html"><command>pg_rewind</command> documentation</ulink> for details.
</para> </para>
<para>
Additionally, <varname>full_page_writes</varname> must be enabled; this is the default and
normally should never be disabled.
</para>
</note> </note>
<para> <para>
@@ -426,7 +430,7 @@
<warning> <warning>
<para> <para>
In all current PostgreSQL versions (as of September 2020), <application>pg_rewind</application> In all PostgreSQL released before February 2021, <application>pg_rewind</application>
contains a corner-case bug which affects standbys in a very specific situation. contains a corner-case bug which affects standbys in a very specific situation.
</para> </para>
<para> <para>
@@ -456,8 +460,7 @@
<para> <para>
Currently it is not possible to resolve this situation using <application>pg_rewind</application>. Currently it is not possible to resolve this situation using <application>pg_rewind</application>.
A <ulink url="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2b4f3130382fe2f8705863e4d38589d4d69cd695">patch</ulink> A <ulink url="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2b4f3130382fe2f8705863e4d38589d4d69cd695">patch</ulink>
has been successfully submitted and will be included the next PostgreSQL minor release round, scheduled for was submitted and is included in all PostgreSQL versions released in February 2021 or later.
February 2021.
</para> </para>
<para> <para>
As a workaround, start the primary server the standby was previously attached to, As a workaround, start the primary server the standby was previously attached to,

View File

@@ -26,7 +26,7 @@
<abstract> <abstract>
<para> <para>
This is the official documentation of &repmgr; &repmgrversion; for This is the official documentation of &repmgr; &repmgrversion; for
use with PostgreSQL 9.4 - PostgreSQL 14. use with PostgreSQL 9.4 - PostgreSQL 15.
</para> </para>
<para> <para>
&repmgr; is being continually developed and we strongly recommend using the &repmgr; is being continually developed and we strongly recommend using the

View File

@@ -345,14 +345,18 @@
</indexterm> </indexterm>
<para> <para>
Indicates a preferred priority (default: <literal>100</literal>) for promoting nodes; Indicates a preferred priority (default: <literal>100</literal>) for promoting nodes.
a value of zero prevents the node being promoted to primary.
</para> </para>
<para> <para>
Note that the priority setting is only applied if two or more nodes are Note that the priority setting is only applied if two or more nodes are
determined as promotion candidates; in that case the node with the determined as promotion candidates; in that case the node with the
higher priority is selected. higher priority is selected.
</para> </para>
<para>
A value of zero will always prevent the node being promoted to primary, even if there
is no other promotion candidate.
</para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@@ -71,6 +71,12 @@
<secondary>minor release</secondary> <secondary>minor release</secondary>
</indexterm> </indexterm>
<para>
A minor release upgrade involves updating &repmgr; from one minor release to another
minor release within the same major release (e.g. <literal>5.3.1</literal> to <literal>5.3.2</literal>).
An upgrade between minor releases of differing major releases (e.g. <literal>5.2.1</literal> to <literal>5.3.2</literal>)
is a <link linkend="upgrading-major-version">major upgrade</link>.
</para>
<para> <para>
The process for installing minor version upgrades is quite straightforward: The process for installing minor version upgrades is quite straightforward:
@@ -105,15 +111,17 @@
</para> </para>
<para> <para>
A PostgreSQL restart is <emphasis>not</emphasis> required for minor version upgrades. A PostgreSQL restart is usually <emphasis>not</emphasis> required for minor version upgrades
within the same major version (e.g. <literal>5.3.1</literal> to <literal>5.3.2</literal>).
Be sure to check the <link linkend="appendix-release-notes">release notes</link>.
</para> </para>
<note> <note>
<para> <para>
The same &repmgr; &quot;major version&quot; (e.g. <literal>4.2</literal>) must be The same &repmgr; &quot;major version&quot; (e.g. <literal>5.3</literal>) must be
installed on all nodes in the replication cluster. While it's possible to have differing installed on all nodes in the replication cluster. While it's possible to have differing
&repmgr; &quot;minor versions&quot; (e.g. <literal>4.2.1</literal>) on different nodes, &repmgr; &quot;minor versions&quot; (e.g. <literal>5.3.1</literal> and <literal>5.3.2</literal>)
we strongly recommend updating all nodes to the latest minor version. on different nodes, we strongly recommend updating all nodes to the latest minor version.
</para> </para>
</note> </note>

View File

@@ -1,2 +0,0 @@
-- complain if script is sourced in psql, rather than via CREAT EXTENSION
\echo Use "CREATE EXTENSION repmgr" to load this file. \quit

View File

@@ -1,192 +0,0 @@
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION repmgr" to load this file. \quit
CREATE TABLE repmgr.nodes (
node_id INTEGER PRIMARY KEY,
upstream_node_id INTEGER NULL REFERENCES nodes (node_id) DEFERRABLE,
active BOOLEAN NOT NULL DEFAULT TRUE,
node_name TEXT NOT NULL,
type TEXT NOT NULL CHECK (type IN('primary','standby','witness','bdr')),
location TEXT NOT NULL DEFAULT 'default',
priority INT NOT NULL DEFAULT 100,
conninfo TEXT NOT NULL,
repluser VARCHAR(63) NOT NULL,
slot_name TEXT NULL,
config_file TEXT NOT NULL
);
SELECT pg_catalog.pg_extension_config_dump('repmgr.nodes', '');
CREATE TABLE repmgr.events (
node_id INTEGER NOT NULL,
event TEXT NOT NULL,
successful BOOLEAN NOT NULL DEFAULT TRUE,
event_timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
details TEXT NULL
);
SELECT pg_catalog.pg_extension_config_dump('repmgr.events', '');
CREATE TABLE repmgr.monitoring_history (
primary_node_id INTEGER NOT NULL,
standby_node_id INTEGER NOT NULL,
last_monitor_time TIMESTAMP WITH TIME ZONE NOT NULL,
last_apply_time TIMESTAMP WITH TIME ZONE,
last_wal_primary_location PG_LSN NOT NULL,
last_wal_standby_location PG_LSN,
replication_lag BIGINT NOT NULL,
apply_lag BIGINT NOT NULL
);
CREATE INDEX idx_monitoring_history_time
ON repmgr.monitoring_history (last_monitor_time, standby_node_id);
SELECT pg_catalog.pg_extension_config_dump('repmgr.monitoring_history', '');
CREATE VIEW repmgr.show_nodes AS
SELECT n.node_id,
n.node_name,
n.active,
n.upstream_node_id,
un.node_name AS upstream_node_name,
n.type,
n.priority,
n.conninfo
FROM repmgr.nodes n
LEFT JOIN repmgr.nodes un
ON un.node_id = n.upstream_node_id;
CREATE TABLE repmgr.voting_term (
term INT NOT NULL
);
CREATE UNIQUE INDEX voting_term_restrict
ON repmgr.voting_term ((TRUE));
CREATE RULE voting_term_delete AS
ON DELETE TO repmgr.voting_term
DO INSTEAD NOTHING;
/* ================= */
/* repmgrd functions */
/* ================= */
/* monitoring functions */
CREATE FUNCTION set_local_node_id(INT)
RETURNS VOID
AS 'MODULE_PATHNAME', 'repmgr_set_local_node_id'
LANGUAGE C STRICT;
CREATE FUNCTION get_local_node_id()
RETURNS INT
AS 'MODULE_PATHNAME', 'repmgr_get_local_node_id'
LANGUAGE C STRICT;
CREATE FUNCTION standby_set_last_updated()
RETURNS TIMESTAMP WITH TIME ZONE
AS 'MODULE_PATHNAME', 'repmgr_standby_set_last_updated'
LANGUAGE C STRICT;
CREATE FUNCTION standby_get_last_updated()
RETURNS TIMESTAMP WITH TIME ZONE
AS 'MODULE_PATHNAME', 'repmgr_standby_get_last_updated'
LANGUAGE C STRICT;
CREATE FUNCTION set_upstream_last_seen(INT)
RETURNS VOID
AS 'MODULE_PATHNAME', 'repmgr_set_upstream_last_seen'
LANGUAGE C STRICT;
CREATE FUNCTION get_upstream_last_seen()
RETURNS INT
AS 'MODULE_PATHNAME', 'repmgr_get_upstream_last_seen'
LANGUAGE C STRICT;
CREATE FUNCTION get_upstream_node_id()
RETURNS INT
AS 'MODULE_PATHNAME', 'repmgr_get_upstream_node_id'
LANGUAGE C STRICT;
CREATE FUNCTION set_upstream_node_id(INT)
RETURNS VOID
AS 'MODULE_PATHNAME', 'repmgr_set_upstream_node_id'
LANGUAGE C STRICT;
/* failover functions */
CREATE FUNCTION notify_follow_primary(INT)
RETURNS VOID
AS 'MODULE_PATHNAME', 'repmgr_notify_follow_primary'
LANGUAGE C STRICT;
CREATE FUNCTION get_new_primary()
RETURNS INT
AS 'MODULE_PATHNAME', 'repmgr_get_new_primary'
LANGUAGE C STRICT;
CREATE FUNCTION reset_voting_status()
RETURNS VOID
AS 'MODULE_PATHNAME', 'repmgr_reset_voting_status'
LANGUAGE C STRICT;
CREATE FUNCTION get_repmgrd_pid()
RETURNS INT
AS 'MODULE_PATHNAME', 'get_repmgrd_pid'
LANGUAGE C STRICT;
CREATE FUNCTION get_repmgrd_pidfile()
RETURNS TEXT
AS 'MODULE_PATHNAME', 'get_repmgrd_pidfile'
LANGUAGE C STRICT;
CREATE FUNCTION set_repmgrd_pid(INT, TEXT)
RETURNS VOID
AS 'MODULE_PATHNAME', 'set_repmgrd_pid'
LANGUAGE C CALLED ON NULL INPUT;
CREATE FUNCTION repmgrd_is_running()
RETURNS BOOL
AS 'MODULE_PATHNAME', 'repmgrd_is_running'
LANGUAGE C STRICT;
CREATE FUNCTION repmgrd_pause(BOOL)
RETURNS VOID
AS 'MODULE_PATHNAME', 'repmgrd_pause'
LANGUAGE C STRICT;
CREATE FUNCTION repmgrd_is_paused()
RETURNS BOOL
AS 'MODULE_PATHNAME', 'repmgrd_is_paused'
LANGUAGE C STRICT;
CREATE FUNCTION get_wal_receiver_pid()
RETURNS INT
AS 'MODULE_PATHNAME', 'repmgr_get_wal_receiver_pid'
LANGUAGE C STRICT;
/* views */
CREATE VIEW repmgr.replication_status AS
SELECT m.primary_node_id, m.standby_node_id, n.node_name AS standby_name,
n.type AS node_type, n.active, last_monitor_time,
CASE WHEN n.type='standby' THEN m.last_wal_primary_location ELSE NULL END AS last_wal_primary_location,
m.last_wal_standby_location,
CASE WHEN n.type='standby' THEN pg_catalog.pg_size_pretty(m.replication_lag) ELSE NULL END AS replication_lag,
CASE WHEN n.type='standby' THEN
CASE WHEN replication_lag > 0 THEN age(now(), m.last_apply_time) ELSE '0'::INTERVAL END
ELSE NULL
END AS replication_time_lag,
CASE WHEN n.type='standby' THEN pg_catalog.pg_size_pretty(m.apply_lag) ELSE NULL END AS apply_lag,
AGE(NOW(), CASE WHEN pg_catalog.pg_is_in_recovery() THEN repmgr.standby_get_last_updated() ELSE m.last_monitor_time END) AS communication_time_lag
FROM repmgr.monitoring_history m
JOIN repmgr.nodes n ON m.standby_node_id = n.node_id
WHERE (m.standby_node_id, m.last_monitor_time) IN (
SELECT m1.standby_node_id, MAX(m1.last_monitor_time)
FROM repmgr.monitoring_history m1 GROUP BY 1
);

View File

@@ -3634,8 +3634,8 @@ can_use_pg_rewind(PGconn *conn, const char *data_directory, PQExpBufferData *rea
/* "full_page_writes" must be on in any case */ /* "full_page_writes" must be on in any case */
if (guc_set(conn, "full_page_writes", "=", "off")) if (guc_set(conn, "full_page_writes", "=", "off"))
{ {
appendPQExpBuffer(reason, appendPQExpBufferStr(reason,
_("\"full_page_writes\" must be set to \"on\"")); _("\"full_page_writes\" must be set to \"on\""));
can_use = false; can_use = false;
} }
@@ -3653,18 +3653,18 @@ can_use_pg_rewind(PGconn *conn, const char *data_directory, PQExpBufferData *rea
if (data_checksum_version == UNKNOWN_DATA_CHECKSUM_VERSION) if (data_checksum_version == UNKNOWN_DATA_CHECKSUM_VERSION)
{ {
if (can_use == false) if (can_use == false)
appendPQExpBuffer(reason, "; "); appendPQExpBufferStr(reason, "; ");
appendPQExpBuffer(reason, appendPQExpBufferStr(reason,
_("\"wal_log_hints\" is set to \"off\" but unable to determine data checksum version")); _("\"wal_log_hints\" is set to \"off\" but unable to determine data checksum version"));
can_use = false; can_use = false;
} }
else if (data_checksum_version == 0) else if (data_checksum_version == 0)
{ {
if (can_use == false) if (can_use == false)
appendPQExpBuffer(reason, "; "); appendPQExpBufferStr(reason, "; ");
appendPQExpBuffer(reason, appendPQExpBufferStr(reason,
_("\"wal_log_hints\" is set to \"off\" and data checksums are disabled")); _("\"wal_log_hints\" is set to \"off\" and data checksums are disabled"));
can_use = false; can_use = false;
@@ -3873,19 +3873,17 @@ drop_replication_slot_if_exists(PGconn *conn, int node_id, char *slot_name)
*/ */
bool use_replication_protocol = false; bool use_replication_protocol = false;
PGconn *slot_conn = NULL; PGconn *slot_conn = _get_replication_slot_connection(conn,
replication_user,
slot_conn = _get_replication_slot_connection(conn, &use_replication_protocol);
replication_user,
&use_replication_protocol);
if (use_replication_protocol == true) if (use_replication_protocol == true)
{ {
success = drop_replication_slot_replprot(conn, slot_name); success = drop_replication_slot_replprot(slot_conn, slot_name);
} }
else else
{ {
success = drop_replication_slot_sql(conn, slot_name); success = drop_replication_slot_sql(slot_conn, slot_name);
} }
if (success == true) if (success == true)
@@ -3965,9 +3963,13 @@ _determine_replication_slot_user(PGconn *conn, t_node_info *upstream_node_record
/* This should never happen */ /* This should never happen */
log_error("unable to determine replication slot user"); log_error("unable to determine replication slot user");
if (upstream_node_record != NULL) if (upstream_node_record != NULL)
{
log_debug("%i %s %s", upstream_node_record->node_id, upstream_node_record->repluser, PQuser(conn)); log_debug("%i %s %s", upstream_node_record->node_id, upstream_node_record->repluser, PQuser(conn));
}
else else
{
log_debug("upstream_node_record not provided"); log_debug("upstream_node_record not provided");
}
} }
} }
} }
@@ -3984,13 +3986,13 @@ _get_replication_slot_connection(PGconn *conn, char *replication_user, bool *use
switch (ReplicationSlotUser) switch (ReplicationSlotUser)
{ {
case USER_TYPE_UNKNOWN: case USER_TYPE_UNKNOWN:
log_error("unable to determine user for replication slot creation"); log_error("unable to determine user for managing replication slots");
return NULL; return NULL;
case REPMGR_USER: case REPMGR_USER:
slot_conn = conn; slot_conn = conn;
log_info(_("creating replication slot as user \"%s\""), log_verbose(LOG_INFO, _("managing replication slot as user \"%s\""),
PQuser(conn)); PQuser(conn));
break; break;
case REPLICATION_USER_NODE: case REPLICATION_USER_NODE:
@@ -4001,7 +4003,7 @@ _get_replication_slot_connection(PGconn *conn, char *replication_user, bool *use
true); true);
if (slot_conn == NULL || PQstatus(slot_conn) != CONNECTION_OK) if (slot_conn == NULL || PQstatus(slot_conn) != CONNECTION_OK)
{ {
log_error(_("unable to create replication connection as user \"%s\""), log_error(_("unable to manage replication connection as replication user \"%s\""),
runtime_options.replication_user); runtime_options.replication_user);
log_detail("%s", PQerrorMessage(slot_conn)); log_detail("%s", PQerrorMessage(slot_conn));
@@ -4009,8 +4011,8 @@ _get_replication_slot_connection(PGconn *conn, char *replication_user, bool *use
return NULL; return NULL;
} }
*use_replication_protocol = true; *use_replication_protocol = true;
log_info(_("creating replication slot as replication user \"%s\""), log_verbose(LOG_INFO, _("managing replication slot as replication user \"%s\""),
replication_user); replication_user);
} }
break; break;
@@ -4021,7 +4023,7 @@ _get_replication_slot_connection(PGconn *conn, char *replication_user, bool *use
false); false);
if (slot_conn == NULL || PQstatus(slot_conn )!= CONNECTION_OK) if (slot_conn == NULL || PQstatus(slot_conn )!= CONNECTION_OK)
{ {
log_error(_("unable to create super connection as user \"%s\""), log_error(_("unable to create superuser connection as user \"%s\""),
runtime_options.superuser); runtime_options.superuser);
log_detail("%s", PQerrorMessage(slot_conn)); log_detail("%s", PQerrorMessage(slot_conn));
@@ -4029,8 +4031,8 @@ _get_replication_slot_connection(PGconn *conn, char *replication_user, bool *use
return NULL; return NULL;
} }
log_info(_("creating replication slot as superuser \"%s\""), log_verbose(LOG_INFO, _("creating replication slot as superuser \"%s\""),
runtime_options.superuser); runtime_options.superuser);
} }
break; break;
} }

View File

@@ -86,7 +86,6 @@ static shmem_request_hook_type prev_shmem_request_hook = NULL;
static shmem_startup_hook_type prev_shmem_startup_hook = NULL; static shmem_startup_hook_type prev_shmem_startup_hook = NULL;
void _PG_init(void); void _PG_init(void);
void _PG_fini(void);
#if (PG_VERSION_NUM >= 150000) #if (PG_VERSION_NUM >= 150000)
static void repmgr_shmem_request(void); static void repmgr_shmem_request(void);
@@ -145,21 +144,6 @@ _PG_init(void)
} }
/*
* Module unload callback
*/
void
_PG_fini(void)
{
/* Uninstall hook */
#if (PG_VERSION_NUM >= 150000)
shmem_request_hook = prev_shmem_request_hook;
#endif
shmem_startup_hook = prev_shmem_startup_hook;
}
#if (PG_VERSION_NUM >= 150000) #if (PG_VERSION_NUM >= 150000)
/* /*
* shmem_requst_hook: request shared memory * shmem_requst_hook: request shared memory
@@ -177,7 +161,7 @@ repmgr_shmem_request(void)
#endif #endif
/* /*
* shmem_ hook: allocate or attach to shared memory, * shmem_startup hook: allocate or attach to shared memory
*/ */
static void static void
repmgr_shmem_startup(void) repmgr_shmem_startup(void)

View File

@@ -1,6 +1,6 @@
# repmgr extension # repmgr extension
comment = 'Replication manager for PostgreSQL' comment = 'Replication manager for PostgreSQL'
default_version = '5.4' default_version = '5.3'
module_pathname = '$libdir/repmgr' module_pathname = '$libdir/repmgr'
relocatable = false relocatable = false
schema = repmgr schema = repmgr

View File

@@ -1,7 +1,7 @@
#define REPMGR_VERSION_DATE "" #define REPMGR_VERSION_DATE ""
#define REPMGR_VERSION "5.4dev" #define REPMGR_VERSION "5.3.3"
#define REPMGR_VERSION_NUM 50400 #define REPMGR_VERSION_NUM 50303
#define REPMGR_EXTENSION_VERSION "5.4" #define REPMGR_EXTENSION_VERSION "5.3"
#define REPMGR_EXTENSION_NUM 50400 #define REPMGR_EXTENSION_NUM 50300
#define REPMGR_RELEASE_DATE "2022-XX-XX" #define REPMGR_RELEASE_DATE "2022-10-17"
#define PG_ACTUAL_VERSION_NUM #define PG_ACTUAL_VERSION_NUM

View File

@@ -1587,22 +1587,22 @@ monitor_streaming_standby(void)
/* TODO: possibly add pre-action event here */ /* TODO: possibly add pre-action event here */
if (upstream_node_info.type == STANDBY) if (upstream_node_info.type == STANDBY)
{ {
create_event_record(primary_conn, create_event_notification(primary_conn,
&config_file_options, &config_file_options,
config_file_options.node_id, config_file_options.node_id,
"repmgrd_upstream_disconnect", "repmgrd_upstream_disconnect",
true, true,
event_details.data); event_details.data);
} }
else else
{ {
/* primary connection lost - script notification only */ /* primary connection lost - script notification only */
create_event_record(NULL, create_event_notification(NULL,
&config_file_options, &config_file_options,
config_file_options.node_id, config_file_options.node_id,
"repmgrd_upstream_disconnect", "repmgrd_upstream_disconnect",
true, true,
event_details.data); event_details.data);
} }
log_warning("%s", event_details.data); log_warning("%s", event_details.data);
@@ -2482,12 +2482,12 @@ monitor_streaming_witness(void)
_("unable to connect to primary node \"%s\" (ID: %i)"), _("unable to connect to primary node \"%s\" (ID: %i)"),
upstream_node_info.node_name, upstream_node_info.node_id); upstream_node_info.node_name, upstream_node_info.node_id);
create_event_record(NULL, create_event_notification(NULL,
&config_file_options, &config_file_options,
config_file_options.node_id, config_file_options.node_id,
"repmgrd_upstream_disconnect", "repmgrd_upstream_disconnect",
true, true,
event_details.data); event_details.data);
termPQExpBuffer(&event_details); termPQExpBuffer(&event_details);
} }