Skip to content

Commit ee1b38f

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 bea449c commit ee1b38f

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
@@ -1488,7 +1488,7 @@ static void
14881488
SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
14891489
{
14901490
Size needed_length;
1491-
SnapBuildOnDisk *ondisk;
1491+
SnapBuildOnDisk *ondisk = NULL;
14921492
char *ondisk_c;
14931493
int fd;
14941494
char tmppath[MAXPGPATH];
@@ -1687,6 +1687,9 @@ SnapBuildSerialize(SnapBuild *builder, XLogRecPtr lsn)
16871687
out:
16881688
ReorderBufferSetRestartPoint(builder->reorder,
16891689
builder->last_serialized_snapshot);
1690+
/* be tidy */
1691+
if (ondisk)
1692+
pfree(ondisk);
16901693
}
16911694

16921695
/*

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy