Re: Fixing memory leaks in postgres_fdw
Matheus Alcantara <matheusssilv97@gmail.com>
From: Matheus Alcantara <matheusssilv97@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Etsuro Fujita <etsuro.fujita@gmail.com>,
pgsql-hackers@lists.postgresql.org
Date: 2025-05-29T13:07:31Z
Lists: pgsql-hackers
On 28/05/25 17:56, Tom Lane wrote: > I wrote: >> Having said that, the idea that this sequence is OOM-safe is pretty >> silly anyway, considering that createNewConnection does a pstrdup, >> and creates a new hashtable entry which might require enlarging the >> hashtable, and for that matter might even create the hashtable. >> So maybe rather than continuing to adhere to a half-baked coding >> rule, we need to think of some other way to do that. > > Here's an attempt at fixing this properly. I'm posting it as a > standalone patch because I now think this part might be worth > back-patching. The odds of an OOM at just the wrong time aren't > high, but losing track of an open connection seems pretty bad. > The v5-0001 makes sense to me. I think that now it follows a similar approach with postgres_fdw that first create the hash entry and them set the connection on the hash entry. I've also reviewed the remaining patches, v4-0002, v4-0003 and v4-0004 and it all looks reasonable to me. +1 for going forward with these patches. The only point is that I've just tried to apply the v5-0001 on top of the previous v4-000X patches and is raising an error: ❯❯❯ git am v5-0001-Avoid-resource-leaks-when-a-dblink-connection-fai.patch Applying: Avoid resource leaks when a dblink connection fails. error: patch failed: contrib/dblink/dblink.c:105 error: contrib/dblink/dblink.c: patch does not apply Patch failed at 0001 Avoid resource leaks when a dblink connection fails. -- Matheus Alcantara
Commits
-
Silence leakage complaint about postgres_fdw's InitPgFdwOptions.
- 0f9d4d7c12dc 19 (unreleased) landed
-
Run pgindent on the changes of the previous patch.
- 73873805fb36 19 (unreleased) landed
-
Reap the benefits of not having to avoid leaking PGresults.
- 80aa9848befc 19 (unreleased) landed
-
Create infrastructure to reliably prevent leakage of PGresults.
- 7d8f59577924 19 (unreleased) landed
-
Fix memory leakage in postgres_fdw's DirectModify code path.
- 9339c85afc91 17.6 landed
- 4a07c096132c 14.19 landed
- 3c31594f55cd 15.14 landed
- 2b92dc4eeb51 16.10 landed
- 271cb7eaa7c8 13.22 landed
- 232d8caeaaa6 18.0 landed
-
Avoid resource leaks when a dblink connection fails.
- e7d3d4ed412e 13.22 landed
- e20b3256ae46 17.6 landed
- 8eef55db13fe 16.10 landed
- 470273da0ff7 18.0 landed
- 2cd2222ca5f4 14.19 landed
- 09c9ae8f6d3a 15.14 landed