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

Re: pgsql: rm_cleanup functions need to be allowed to write WAL entries.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: pgsql-committers(at)postgresql(dot)org
Subject: Re: pgsql: rm_cleanup functions need to be allowed to write WAL entries.
Date: 2009-08-08 16:46:35
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-committers
Simon Riggs <simon(at)2ndQuadrant(dot)com> writes:
> Resetting it back seems fragile, since in crash recovery we call it
> again almost immediately during CreateCheckPoint(). That only works if
> LocalSetXLogInsertAllowed() has no side effects. I understand Heikki's
> wish to have safeguards in place, so we should document that
> LocalSetXLogInsertAllowed() can be executed twice without problem.


My initial thought had actually been to get rid of the use of
LocalSetXLogInsertAllowed inside CreateCheckPoint, since with this
patch we are calling it from the same bit of code that is about
to call CreateCheckPoint --- leaving the flag set throughout that
bit would be fine.  However that would only work as intended if
the checkpoint were done locally; if somehow we'd launched the
bgwriter and the checkpoint request got sent over there, it'd fail.
I don't believe this is currently possible during a crash recovery
scenario, but on the whole it seemed more fragile to do it that way
than in the code as-committed.  In principle, at least, it seems
possible that the rm_cleanup and checkpoint actions could be done
in different processes, and this setup preserves the freedom to
let that happen.

			regards, tom lane

In response to


pgsql-committers by date

Next:From: Simon RiggsDate: 2009-08-09 10:06:00
Subject: Re: pgsql: rm_cleanup functions need to be allowed towrite WAL entries.
Previous:From: Tom LaneDate: 2009-08-08 16:39:25
Subject: pgsql: Document that LocalSetXLogInsertAllowed can be re-executed.

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group