RE: speed up a logical replica setup

From: "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>
To: 'Shubham Khanna' <khannashubham1197(at)gmail(dot)com>, Euler Taveira <euler(at)eulerto(dot)com>
Cc: Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Michael Paquier <michael(at)paquier(dot)xyz>, Andres Freund <andres(at)anarazel(dot)de>, Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com>, Fabrízio de Royes Mello <fabriziomello(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>
Subject: RE: speed up a logical replica setup
Date: 2024-03-25 11:48:05
Message-ID: OS7PR01MB12081B492E038E0299D816BBAF5362@OS7PR01MB12081.jpnprd01.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Dear Shubham,

> I had run valgrind with pg_createsubscriber to see if there were any
> issues.

Thanks for running the tool!

> Valgrind reported the following issues:
> ==651272== LEAK SUMMARY:
> ==651272== definitely lost: 1,319 bytes in 18 blocks
> ==651272== indirectly lost: 1,280 bytes in 2 blocks
> ==651272== possibly lost: 44 bytes in 3 blocks
> ==651272== still reachable: 3,066 bytes in 22 blocks
> ==651272== suppressed: 0 bytes in 0 blocks
> ==651272==
> ==651272== For lists of detected and suppressed errors, rerun with: -s
> ==651272== ERROR SUMMARY: 17 errors from 17 contexts (suppressed: 0 from
> 0)
> The attached report has the details of the same.

I read the report. I'm not sure all entries must be fixed. Based on other client
tools, old discussions [1], and current codes, I thought we could determine the below
rule:

* For global variables (and their attributes), no need to free the allocated memory.
* For local variables (and their attributes) in main(), no need to free the allocated memory.
* For local variables in other functions, they should be free'd at the end of the function.

Per above rule and your report, I made a top-up patch which adds pg_free() and
destroyPQExpBuffer() several places. How do you think?

[1]: https://www.postgresql.org/message-id/40595e73-c7e1-463a-b8be-49792e870007%40app.fastmail.com

Best Regards,
Hayato Kuroda
FUJITSU LIMITED
https://www.fujitsu.com/

Attachment Content-Type Size
v34-0001-pg_createsubscriber-creates-a-new-logical-replic.patch application/octet-stream 100.8 KB
v34-0002-Remove-How-it-Works-section.patch application/octet-stream 5.9 KB
v34-0003-Check-both-servers-before-exiting.patch application/octet-stream 3.3 KB
v34-0004-Free-malloc-d-memory-if-no-variables-could-be-re.patch application/octet-stream 1.7 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message shveta malik 2024-03-25 11:54:25 Re: Introduce XID age and inactive timeout based replication slot invalidation
Previous Message David Rowley 2024-03-25 11:41:57 Re: Add bump memory context type and use it for tuplesorts