I think the recovery parameters

    archive_cleanup_command
    promote_trigger_file
    recovery_end_command
    recovery_min_apply_delay

can be changed from PGC_POSTMASTER to PGC_SIGHUP without any further
complications (unlike for example primary_conninfo, which is being
discussed elsewhere).

See attached patch.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From 6e0777f4799bce027aa339629539cc101ed0f862 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Mon, 4 Feb 2019 09:28:17 +0100
Subject: [PATCH] Allow some recovery parameters to be changed with reload

Change

archive_cleanup_command
promote_trigger_file
recovery_end_command
recovery_min_apply_delay

from PGC_POSTMASTER to PGC_SIGHUP.  This did not require any further
changes.
---
 doc/src/sgml/config.sgml                      | 21 +++++++++++++++----
 src/backend/utils/misc/guc.c                  |  8 +++----
 src/backend/utils/misc/postgresql.conf.sample |  4 ----
 3 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 9b7a7388d5..7e208a4b81 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -3081,8 +3081,7 @@ <title>Archive Recovery</title>
     <para>
      This section describes the settings that apply only for the duration of
      the recovery.  They must be reset for any subsequent recovery you wish to
-     perform.  They can only be set at server start and cannot be changed once
-     recovery has begun.
+     perform.
     </para>
 
     <para>
@@ -3161,6 +3160,10 @@ <title>Archive Recovery</title>
         database server shutdown) or an error by the shell (such as command
         not found), then recovery will abort and the server will not start up.
        </para>
+
+       <para>
+        This parameter can only be set at server start.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -3202,6 +3205,10 @@ <title>Archive Recovery</title>
         terminated by a signal or an error by the shell (such as command not
         found), a fatal error will be raised.
        </para>
+       <para>
+        This parameter can only be set in the 
<filename>postgresql.conf</filename>
+        file or on the server command line.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -3227,6 +3234,10 @@ <title>Archive Recovery</title>
         signal or an error by the shell (such as command not found), the
         database will not proceed with startup.
        </para>
+       <para>
+        This parameter can only be set in the 
<filename>postgresql.conf</filename>
+        file or on the server command line.
+       </para>
       </listitem>
      </varlistentry>
 
@@ -3863,7 +3874,8 @@ <title>Standby Servers</title>
           standby.  Even if this value is not set, you can still promote
           the standby using <command>pg_ctl promote</command> or calling
           <function>pg_promote</function>.
-          This parameter can only be set at server start.
+          This parameter can only be set in the 
<filename>postgresql.conf</filename>
+          file or on the server command line.
          </para>
         </listitem>
        </varlistentry>
@@ -4117,7 +4129,8 @@ <title>Standby Servers</title>
         </warning>
        </para>
        <para>
-        This parameter can only be set at server start.
+        This parameter can only be set in the 
<filename>postgresql.conf</filename>
+        file or on the server command line.
        </para>
       </listitem>
      </varlistentry>
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 8681ada33a..ea5444c6f1 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -2047,7 +2047,7 @@ static struct config_int ConfigureNamesInt[] =
        },
 
        {
-               {"recovery_min_apply_delay", PGC_POSTMASTER, 
REPLICATION_STANDBY,
+               {"recovery_min_apply_delay", PGC_SIGHUP, REPLICATION_STANDBY,
                        gettext_noop("Sets the minimum delay for applying 
changes during recovery."),
                        NULL,
                        GUC_UNIT_MS
@@ -3398,7 +3398,7 @@ static struct config_string ConfigureNamesString[] =
        },
 
        {
-               {"archive_cleanup_command", PGC_POSTMASTER, 
WAL_ARCHIVE_RECOVERY,
+               {"archive_cleanup_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
                        gettext_noop("Sets the shell command that will be 
executed at every restart point."),
                        NULL
                },
@@ -3408,7 +3408,7 @@ static struct config_string ConfigureNamesString[] =
        },
 
        {
-               {"recovery_end_command", PGC_POSTMASTER, WAL_ARCHIVE_RECOVERY,
+               {"recovery_end_command", PGC_SIGHUP, WAL_ARCHIVE_RECOVERY,
                        gettext_noop("Sets the shell command that will be 
executed once at the end of recovery."),
                        NULL
                },
@@ -3474,7 +3474,7 @@ static struct config_string ConfigureNamesString[] =
        },
 
        {
-               {"promote_trigger_file", PGC_POSTMASTER, REPLICATION_STANDBY,
+               {"promote_trigger_file", PGC_SIGHUP, REPLICATION_STANDBY,
                        gettext_noop("Specifies a file name whose presence ends 
recovery in the standby."),
                        NULL
                },
diff --git a/src/backend/utils/misc/postgresql.conf.sample 
b/src/backend/utils/misc/postgresql.conf.sample
index c7f53470df..ad6c436f93 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -244,9 +244,7 @@
                                # e.g. 'cp /mnt/server/archivedir/%f %p'
                                # (change requires restart)
 #archive_cleanup_command = ''  # command to execute at every restartpoint
-                               # (change requires restart)
 #recovery_end_command = ''     # command to execute at completion of recovery
-                               # (change requires restart)
 
 # - Recovery Target -
 
@@ -310,7 +308,6 @@
 #primary_slot_name = ''                        # replication slot on sending 
server
                                        # (change requires restart)
 #promote_trigger_file = ''             # file name whose presence ends recovery
-                                       # (change requires restart)
 #hot_standby = on                      # "off" disallows queries during 
recovery
                                        # (change requires restart)
 #max_standby_archive_delay = 30s       # max delay before canceling queries
@@ -329,7 +326,6 @@
 #wal_retrieve_retry_interval = 5s      # time to wait before retrying to
                                        # retrieve WAL after a failed attempt
 #recovery_min_apply_delay = 0          # minimum delay for applying changes 
during recovery
-                                       # (change requires restart)
 
 # - Subscribers -
 
-- 
2.20.1

Reply via email to