aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2017-05-31 20:57:25 +0200
committerMagnus Hagander <magnus@hagander.net>2017-05-31 21:00:37 +0200
commit2712da8b64b4e399a2666cce2c25329f4f834f2d (patch)
treeebd0fa9183653dcd6e384eca33cfc9f82b72d060
parent814573e6c4889f901ba72c0c0d2c948846744c73 (diff)
downloadpostgresql-2712da8b64b4e399a2666cce2c25329f4f834f2d.tar.gz
postgresql-2712da8b64b4e399a2666cce2c25329f4f834f2d.zip
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
-rw-r--r--src/bin/pg_basebackup/pg_basebackup.c2
1 files changed, 1 insertions, 1 deletions
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);