Re: Patch to implement pg_current_logfile() function - Mailing list pgsql-hackers

From Haribabu Kommi
Subject Re: Patch to implement pg_current_logfile() function
Date
Msg-id CAJrrPGeLar-mXeHj3K3agW6CHLeh8up4zVgrZ-mZxJnUwdY34g@mail.gmail.com
Whole thread Raw
In response to Re: Patch to implement pg_current_logfile() function  ("Karl O. Pinc" <kop@meme.com>)
List pgsql-hackers


On Fri, Dec 2, 2016 at 12:08 PM, Karl O. Pinc <kop@meme.com> wrote:
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.

Moved to next CF with "needs review" status.

Regards,
Hari Babu
Fujitsu Australia

pgsql-hackers by date:

Previous
From: Vladimir Rusinov
Date:
Subject: Re: s/xlog/wal/ in tools and function names?
Next
From: Haribabu Kommi
Date:
Subject: Re: DROP FUNCTION of multiple functions