Re: COPYable logs status

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: COPYable logs status
Date: 2007-06-08 14:29:03
Message-ID: 25062.1181312943@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

Alvaro Herrera <alvherre(at)commandprompt(dot)com> writes:
> The idea of one pipe per process is not really workable, because it
> would mean having as many pipes as backends which does not sound very
> good. But how about a mixed approach -- like have the all the backends
> share a pipe, controlled by an LWLock, and the auxiliary process have a
> separate pipe each?

Multiple pipes seem like a mess, and in any case the above still doesn't
work for stderr output produced by non-cooperative software (dynamic
loader for instance).

The only solution that I can see is to invent some sort of simple
protocol for the syslogger pipe. Assume that the kernel honors PIPE_BUF
(this assumption may need proving, see other message). We could imagine
having elog.c divvy up its writes to the pipe into chunks of less than
PIPE_BUF bytes, where each chunk carries info sufficient to let it be
reassembled. Perhaps something on the order of

\0 \0 2-byte-length source-PID end-flag text...

The syslogger reassembles these by joining messages with the same
origination PID, until it gets one with the end-flag set. It would need
enough code to track multiple in-progress messages.

The logger would have to also be able to deal with random text coming
down the pipe (due to aforesaid non-cooperative software). I would be
inclined to say just take any text not preceded by \0\0 as a standalone
message, up to the next \0\0. Long chunks of non-protocol text would
risk getting treated as multiple messages, but there's probably not a
lot of harm in that.

BTW, exactly what is the COPYable-logs code going to do with random
text? I trust the answer is not "throw it away".

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Greg Smith 2007-06-08 14:33:50 Re: Controlling Load Distributed Checkpoints
Previous Message Heikki Linnakangas 2007-06-08 14:21:10 Re: Controlling Load Distributed Checkpoints

Browse pgsql-patches by date

  From Date Subject
Next Message Greg Smith 2007-06-08 14:33:50 Re: Controlling Load Distributed Checkpoints
Previous Message Heikki Linnakangas 2007-06-08 14:21:10 Re: Controlling Load Distributed Checkpoints