Re: Patch to implement pg_current_logfile() function
От | Gilles Darold |
---|---|
Тема | Re: Patch to implement pg_current_logfile() function |
Дата | |
Msg-id | 213a212d-4e98-a736-1d64-0a7322ecd99f@dalibo.com обсуждение исходный текст |
Ответ на | Re: Patch to implement pg_current_logfile() function ("Karl O. Pinc" <kop@meme.com>) |
Ответы |
Re: Patch to implement pg_current_logfile() function
|
Список | pgsql-hackers |
Le 02/12/2016 à 02:08, Karl O. Pinc a écrit : > On Sun, 27 Nov 2016 21:54:46 +0100 > Gilles Darold <gilles.darold@dalibo.com> wrote: > >> I've attached the v15 of the patch >> I've not applied patch patch_pg_current_logfile-v14.diff.backoff to >> prevent constant call of logfile_writename() on a busy system (errno = >> ENFILE | EMFILE). > I don't think it should be applied and included in the basic > functionality patch in any case. I think it needs to be submitted as a > separate patch along with the basic functionality patch. Backing off > the retry of the current_logfiles write could be overly fancy and > simply not needed. > >> I think this can be done quite simply by testing if >> log rotate is still enabled. This is possible because function >> logfile_rotate() is already testing if errno = ENFILE | EMFILE and in >> this case rotation_disabled is set to true. So the following test >> should do the work: >> >> if (log_metainfo_stale && !rotation_disabled) >> logfile_writename(); >> >> This is included in v15 patch. > I don't see this helping much, if at all. > > First, it's not clear just when rotation_disabled can be false > when log_metainfo_stale is true. The typical execution > path is for logfile_writename() to be called after rotate_logfile() > has already set rotataion_disabled to true. logfile_writename() > is the only place setting log_metainfo_stale to true and > rotate_logfile() the only place settig rotation_disabled to false. > > While it's possible > that log_metainfo_stale might be set to true when logfile_writename() > is called from within open_csvlogfile(), this does not help with the > stderr case. IMO better to just test for log_metaifo_stale at the > code snippet above. > > Second, the whole point of retrying the logfile_writename() call is > to be sure that the current_logfiles file is updated before the logs > rotate. Waiting until logfile rotation is enabled defeats the purpose. Ok, sorry I've misunderstood your previous post. Current v16 attached patch removed your change about log_meta_info stale and fix the use of sscanf to read the file. It seems that all fixes have been included in this patch. Regards -- Gilles Darold Consultant PostgreSQL http://dalibo.com - http://dalibo.org
Вложения
В списке pgsql-hackers по дате отправления: