Re: Missing pfree in logical_heap_rewrite_flush_mappings()

From: Andres Freund <andres(at)2ndquadrant(dot)com>
To: Stephen Frost <sfrost(at)snowman(dot)net>
Cc: Ants Aasma <ants(at)cybertec(dot)at>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Robert Haas <robertmhaas(at)gmail(dot)com>
Subject: Re: Missing pfree in logical_heap_rewrite_flush_mappings()
Date: 2014-03-26 17:29:38
Message-ID: 20140326172938.GD9066@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2014-03-26 12:49:41 -0400, Stephen Frost wrote:
> * Ants Aasma (ants(at)cybertec(dot)at) wrote:
> > It seems to me that when flushing logical mappings to disk, each
> > mapping file leaks the buffer used to pass the mappings to XLogInsert.
> > Also, it seems consistent to allocate that buffer in the RewriteState
> > memory context. Patch attached.

Good catch. There's actually no need for explicitly using the context,
we're in the appropriate one. The only other MemoryContextAlloc() caller
in there should be converted to a palloc as well.

> Hmm, yeah, it does look that way. Why bother pfree'ing it here though
> instead of letting it be cleaned up with state->rs_cxt in
> end_heap_rewrite()?

For a somewhat large relation (say a pg_attribute in a db with lots of
tables), this can actually get to be a somewhat significant amount of
memory. It *will* currently already get cleaned up with the context, but
we can easily do better.

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Stephen Frost 2014-03-26 17:41:27 Re: Missing pfree in logical_heap_rewrite_flush_mappings()
Previous Message Tom Lane 2014-03-26 16:52:11 Re: small regression adjustment