Revise ResourceOwner code to avoid accumulating ResourceOwner objects
Tom Lane <tgl@sss.pgh.pa.us>
Revise ResourceOwner code to avoid accumulating ResourceOwner objects for every command executed within a transaction. For long transactions this was a significant memory leak. Instead, we can delete a portal's or subtransaction's ResourceOwner immediately, if we physically transfer the information about its locks up to the parent owner. This does not fully solve the leak problem; we need to do something about counting multiple acquisitions of the same lock in order to fix it. But it's a necessary step along the way.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/transam/xact.c | modified | +38 −17 |
| src/backend/utils/mmgr/portalmem.c | modified | +2 −3 |
| src/backend/utils/resowner/README | modified | +10 −3 |
| src/backend/utils/resowner/resowner.c | modified | +22 −7 |