On 2016-04-04 07:31:46 +0100, Simon Riggs wrote:
> On 4 April 2016 at 07:24, Andres Freund <andres@anarazel.de> wrote:
>
> > On 2016-04-04 06:19:04 +0000, Simon Riggs wrote:
> > > Avoid archiving XLOG_RUNNING_XACTS on idle server
> > >
> > > If archive_timeout > 0 we should avoid logging XLOG_RUNNING_XACTS if
> > idle.
> > >
> > > Bug 13685 reported by Laurence Rowe, investigated in detail by Michael
> > Paquier,
> > > though this is not his proposed fix.
> > > 20151016203031.3019.72930@wrigleys.postgresql.org
> > >
> > > Simple non-invasive patch to allow later backpatch to 9.4 and 9.5
> >
> > Uh. This is wrong.
>
>
> For one it breaks cleanup with logical decoding which
> > does *NEED* to know that nothing is happening. Although only once, not
> > repeatedly.
> >
>
> If the patch did that, I agree it would be wrong. It doesn't,
> deliberately.
It doesn't?
+ if (running->xcnt == 0 &&
+ nlocks == 0 &&
+ XLogArchiveTimeout > 0 &&
+ !last_snapshot_overflowed)
+ {
+ LWLockRelease(XidGenLock);
+ return InvalidXLogRecPtr;
+ }
Overflowed snapshots aren't a problem for logical decoding. But we need
to know that no old transactions are running occasionally.
Andres