Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0b2ae3c

Browse files
author
Amit Kapila
committed
Fix memory leak in SnapBuildSerialize.
The memory for the snapshot was leaked while serializing it to disk during logical decoding. This memory will be freed only once walsender stops streaming the changes. This can lead to a huge memory increase when master logs Standby Snapshot too frequently say when the user is trying to create many replication slots. Reported-by: funnyxj.fxj@alibaba-inc.com Diagnosed-by: funnyxj.fxj@alibaba-inc.com Author: Amit Kapila Backpatch-through: 9.5 Discussion: https://postgr.es/m/033ab54c-6393-42ee-8ec9-2b399b5d8cde.funnyxj.fxj@alibaba-inc.com
1 parent 436d9c5 commit 0b2ae3c

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/backend/replication/logical/snapbuild.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1485,7 +1485,7 @@ static void
14851485
SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
14861486
{
14871487
Size needed_length;
1488-
SnapBuildOnDisk *ondisk;
1488+
SnapBuildOnDisk *ondisk = NULL;
14891489
char *ondisk_c;
14901490
int fd;
14911491
char tmppath[MAXPGPATH];
@@ -1684,6 +1684,9 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
16841684
out:
16851685
ReorderBufferSetRestartPoint(builder->reorder,
16861686
builder->last_serialized_snapshot);
1687+
/* be tidy */
1688+
if (ondisk)
1689+
pfree(ondisk);
16871690
}
16881691

16891692
/*

0 commit comments

Comments
 (0)