From: Magnus Hagander Date: Wed, 31 May 2017 18:57:25 +0000 (+0200) Subject: Generate pg_basebackup temporary slot name using backend pid X-Git-Tag: REL_10_BETA2~258 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2712da8b64b4e399a2666cce2c25329f4f834f2d;p=thirdparty%2Fpostgresql.git Generate pg_basebackup temporary slot name using backend pid Using the client pid can easily be non-unique when used on different hosts. Using the backend pid should be guaranteed unique, since the temporary slot gets removed when the client disconnects so it will be gone even if the pid is renewed. Reported by Ludovic Vaugeois-Pepin --- diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 432c282b529..3d6fce2e348 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -493,7 +493,7 @@ LogStreamerMain(logstreamer_param *param) stream.replication_slot = replication_slot; stream.temp_slot = param->temp_slot; if (stream.temp_slot && !stream.replication_slot) - stream.replication_slot = psprintf("pg_basebackup_%d", (int) getpid()); + stream.replication_slot = psprintf("pg_basebackup_%d", (int) PQbackendPID(param->bgconn)); if (format == 'p') stream.walmethod = CreateWalDirectoryMethod(param->xlog, 0, do_sync);