Bruce Momjian wrote:

Actually, this is the current state of this issue.



Right, please comment on this. To recall, it uses shared memory for a "switch to next logfile name" flag, which can't cause harm in case of shmem corruption, and a postmaster opened filehandle (kept open) to a dummy file containing the actual file name (pseudo code below).


Regards,
Andreas

---------------------------------------------------------------------------

Andreas Pflug wrote:


Tom Lane wrote:



Andreas Pflug <[EMAIL PROTECTED]> writes:




Answering my own question, the distribution of the current logfile name could be done trough a file handle.








would you mind commenting on my suggestion so I can continue on that topic?




There is no portable way to redistribute a file handle.




Seems I didn't make clear enough what I mean.

I'd fopen a file handle in the postmaster, and all subsequent processes will inherit that handle just as they do for stderr; no redistribution required.
The log filename is written to that file when pg_logfile_rotate is called:
fseek(fh, 0, SEEK_SET);
fprintf(fh, "%s", newlogfilname);
fflush();


and all subprocesses may retrieve the filename when required by

char buf[MAXPGPATH];
fseek(fh, 0, SEEK_SET);
fread(buf, 1, MAXPGPATH, fh);
buf[MAXPGPATH-1]=0; // prevent buffer overflow
logfile=fopen(buf, "a+");

Regards,
Andreas










---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend

Reply via email to