Re: hyrax vs. RelationBuildPartitionDesc
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Amit Langote <amitlangote09@gmail.com>,
Andres Freund <andres@anarazel.de>,
Alvaro Herrera <alvherre@2ndquadrant.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
amul sul <sulamul@gmail.com>
Date: 2019-06-12T19:11:56Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes: > On Tue, Jun 11, 2019 at 1:57 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > I think the change is responsive to your previous complaint that the > timing of stuff getting freed is not very well pinned down. With this > change, it's much more tightly pinned down: it happens when the > refcount goes to 0. That is definitely not perfect, but I think that > it is a lot easier to come up with scenarios where the leak > accumulates because no cache flush happens while the relfcount is 0 > than it is to come up with scenarios where the refcount never reaches > 0. I agree that the latter type of scenario probably exists, but I > don't think we've come up with one yet. I don't know why you think that's improbable, given that the changes around PartitionDirectory-s cause relcache entries to be held open much longer than before (something I've also objected to on this thread). >> As I said upthread, my current inclination is to do nothing in this >> area for v12 and then try to replace the whole thing with proper >> reference counting in v13. I think the cases where we have a major >> leak are corner-case-ish enough that we can leave it as-is for one >> release. > Is this something you're planning to work on yourself? Well, I'd rather farm it out to somebody else, but ... > Do you have a > design in mind? Is the idea to reference-count the PartitionDesc? What we discussed upthread was refcounting each of the various large sub-objects of relcache entries, not just the partdesc. I think if we're going to go this way we should bite the bullet and fix them all. I really want to burn down RememberToFreeTupleDescAtEOX() in particular ... it seems likely to me that that's also a source of unpleasant memory leaks. regards, tom lane
Commits
-
Load relcache entries' partitioning data on-demand, not immediately.
- 5b9312378e2f 13.0 landed
-
Prevent memory leaks associated with relcache rd_partcheck structures.
- d4c50b4b1f86 10.8 landed
- 5f1433ac5e7f 12.0 landed
- 089e4d405d0f 11.3 landed
-
Don't copy PartitionBoundInfo in set_relation_partition_info.
- c8151e642368 12.0 landed
-
Further reduce memory footprint of CLOBBER_CACHE_ALWAYS testing.
- d3f48dfae42f 12.0 landed
-
Fix some oversights in commit 2455ab488.
- de570047993b 12.0 landed
-
Defend against leaks into RelationBuildPartitionDesc.
- 2455ab48844c 12.0 landed
-
Allow ATTACH PARTITION with only ShareUpdateExclusiveLock.
- 898e5e3290a7 12.0 cited