Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite1c6db6

Browse files
committed
pg_basebackup: Generate valid temporary slot names under PQbackendPID()
pgbouncer can cause PQbackendPID() to return negative values due to itfilling be_pid with random bytes (even these days pid_max can only beset up to 2^22 on 64b machines on Linux, for example, so this cannothappen with normal PID numbers). When this happens, pg_basebackup maygenerate a temporary slot name that may not be accepted by the parser,leading to spurious failures, like:pg_basebackup: error: could not send replication commandERROR: replication slot name "pg_basebackup_-1201966863" containsinvalid characterThis commit fixes that problem by formatting the result fromPQbackendPID() as an unsigned integer when creating the temporaryreplication slot name, so as the invalid character is gone and thecommand can be parsed.Author: Jelte FennemaReviewed-by: Daniel Gustafsson, Nishant SharmaDiscussion:https://postgr.es/m/CAGECzQQOGvYfp8ziF4fWQ_o8s2K7ppaoWBQnTmdakn3s-4Z=5g@mail.gmail.comBackpatch-through: 11
1 parent0174c2d commite1c6db6

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

‎src/bin/pg_basebackup/pg_basebackup.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,8 @@ StartLogStreamer(char *startpos, uint32 timeline, char *sysidentifier,
654654
* Create replication slot if requested
655655
*/
656656
if (temp_replication_slot&& !replication_slot)
657-
replication_slot=psprintf("pg_basebackup_%d", (int)PQbackendPID(param->bgconn));
657+
replication_slot=psprintf("pg_basebackup_%u",
658+
(unsignedint)PQbackendPID(param->bgconn));
658659
if (temp_replication_slot||create_slot)
659660
{
660661
if (!CreateReplicationSlot(param->bgconn,replication_slot,NULL,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp