Set fallback_application_name for a walreceiver to cluster_name

By default, the fallback_application_name for a physical walreceiver
is "walreceiver".  This means that multiple standbys cannot be
distinguished easily on a primary, for example in pg_stat_activity or
synchronous_standby_names.

If cluster_name is set, use that for fallback_application_name in the
walreceiver.  (If it's not set, it remains "walreceiver".)  If someone
set cluster_name to identify their instance, we might as well use that
by default to identify the node remotely as well.  It's still possible
to specify another application_name in primary_conninfo explicitly.

Reviewed-by: Euler Taveira <euler@timbira.com.br>
Discussion: https://www.postgresql.org/message-id/flat/1257eaee-4874-e791-e83a-46720c72cac7@2ndquadrant.com
This commit is contained in:
Peter Eisentraut 2019-02-08 08:17:21 +01:00
parent 414a9d3cf3
commit 6ae578a91e
2 changed files with 12 additions and 4 deletions

View File

@ -3659,7 +3659,8 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
<varname>application_name</varname> setting of the standby, as set in the
standby's connection information. In case of a physical replication
standby, this should be set in the <varname>primary_conninfo</varname>
setting; the default is <literal>walreceiver</literal>.
setting; the default is the setting of <xref linkend="guc-cluster-name"/>
if set, else <literal>walreceiver</literal>.
For logical replication, this can be set in the connection
information of the subscription, and it defaults to the
subscription name. For other replication stream consumers,
@ -6560,8 +6561,15 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
</term>
<listitem>
<para>
Sets the cluster name that appears in the process title for all
server processes in this cluster. The name can be any string of less
Sets a name that identifies this database cluster (instance) for
various purposes. The cluster name appears in the process title for
all server processes in this cluster. Moreover, it is the default
application name for a standby connection (see <xref
linkend="guc-synchronous-standby-names"/>.)
</para>
<para>
The name can be any string of less
than <symbol>NAMEDATALEN</symbol> characters (64 characters in a standard
build). Only printable ASCII characters may be used in the
<varname>cluster_name</varname> value. Other characters will be

View File

@ -293,7 +293,7 @@ WalReceiverMain(void)
/* Establish the connection to the primary for XLOG streaming */
EnableWalRcvImmediateExit();
wrconn = walrcv_connect(conninfo, false, "walreceiver", &err);
wrconn = walrcv_connect(conninfo, false, cluster_name[0] ? cluster_name : "walreceiver", &err);
if (!wrconn)
ereport(ERROR,
(errmsg("could not connect to the primary server: %s", err)));