Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Logger subprocess for win32


  • From: Andreas Pflug <pgadmin(at)pse-consulting(dot)de>
  • To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
  • Cc: pgsql-hackers-win32(at)postgresql(dot)org
  • Subject: Logger subprocess for win32
  • Date: Thu, 29 Jul 2004 11:13:56 +0000
  • Message-id: <4108DBF4(dot)9090509(at)pse-consulting(dot)de>

After many hours of investigation trying to get the logger subprocess running in win32, I had to realize that win32 differences make it impossible to implement it in a similar fashion. Moreover, only the eventlog facility currently guarantees all elog messages to be logged undisturbed, stderr does not.

After finding out which handles get inherited in which situation I frequently found the output of the stderr catching pipe being garbled. Especially the messages from the boot process were nearly completely trunctated. A test program (10 childs writing every 0-100ms) showed that redirecting stderr of several subprocesses into the same pipe will lead to one process overwriting the other's output. This is in contrast to Linux' behaviour. NB: this also applies if stderr is redirected on the shell level.

Apparently, it's necessary to redirect all subprocesses stderr into separate pipes, in order to read them atomically and write them non-garbled to a single stderr (or file) output. I'll be implementing this as a postmaster thread waiting on multiple pipes (one for each client). In order to avoid redirecting and re-redirecting stderr in postmaster every time a subprocess is launched, the pipe handled assigned to that new process should be transferred using read/write_backend_variables, and the new process does the actual redirection.

Regards,
Andreas



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group