Robert Haas <robertmh...@gmail.com> writes: > On Tue, Jun 11, 2019 at 1:57 PM Tom Lane <t...@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