Re: several problems in pg_receivexlog

Magnus Hagander <magnus@hagander.net>

From: Magnus Hagander <magnus@hagander.net>
To: Fujii Masao <masao.fujii@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2012-07-12T11:35:11Z
Lists: pgsql-hackers
On Tue, Jul 10, 2012 at 6:45 PM, Fujii Masao <masao.fujii@gmail.com> wrote:
> On Tue, Jul 10, 2012 at 6:27 AM, Magnus Hagander <magnus@hagander.net> wrote:
>> On Mon, Jul 9, 2012 at 8:23 PM, Fujii Masao <masao.fujii@gmail.com> wrote:
>>> Hi,
>>>
>>> I found several problems in pg_receivexlog, e.g., memory leaks,
>>> file-descripter leaks, ..etc. The attached patch fixes these problems.
>>
>> While I don't doubt that what you've found are real problems, would
>> you mind explaining exactly what they are, so we don't have to
>> reverse-engineer the patch to figure that out?
>
> Yep.
>
> When an error happens after replication connection has been established,
> pg_receivexlog doesn't close an open file descriptor and release an allocated
> memory area. This was harmless before 16282ae688de2b320cf176e9be8a89e4dfc60698
> because pg_receivexlog exits immediately when an error happens. But
> currently in an error case, pg_receivexlog tries reconnecting to the server
> infinitely, so file descriptors and memory would leak. I think this is problem
> and should be fixed. The patch which I submitted yesterday changes
> pg_receivexlog so that it closes the open file and frees the memory area
> before reconnecting to the server.

Thanks. I get it now, and this explains why I didn't see it before - I
didn't check properly after we added the loop mode. Patch applied with
minor changes (e.g. there's no point in doing PQfinish(tmpconn) right
after you've verified tmpconn is NULL)

-- 
 Magnus Hagander
 Me: http://www.hagander.net/
 Work: http://www.redpill-linpro.com/

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Make pg_recievexlog by default loop on connection failures