Re: several problems in pg_receivexlog

Alvaro Herrera <alvherre@commandprompt.com>

From: Alvaro Herrera <alvherre@commandprompt.com>
To: Magnus Hagander <magnus@hagander.net>
Cc: Fujii Masao <masao.fujii@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2012-07-31T15:06:32Z
Lists: pgsql-hackers
Excerpts from Magnus Hagander's message of jue jul 12 07:35:11 -0400 2012:
> On Tue, Jul 10, 2012 at 6:45 PM, Fujii Masao <masao.fujii@gmail.com> wrote:

> > 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)

For some reason, Magnus neglected to backpatch this to 9.2, so I just
did.

-- 
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

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