On Mon, 2010-08-30 at 09:59 +0300, Heikki Linnakangas wrote:
> On 27/08/10 20:17, Fujii Masao wrote:
> > Yes. StartupXLOG calls that before bgwriter is invoked. That is, we can
> > ensure that StartupSUBTRANS has always been done before bgwriter
> > performs a restartpoint.
> 
> Hmm, the comment in CreateCheckpoint() isn't totally accurate either:
> 
> >  * Truncate pg_subtrans if possible.  We can throw away all data before
> >  * the oldest XMIN of any running transaction.      No future transaction 
> > will
> >  * attempt to reference any pg_subtrans entry older than that (see Asserts
> >  * in subtrans.c).  During recovery, though, we mustn't do this because
> >  * StartupSUBTRANS hasn't been called yet.

Yep.

> because in Hot Standby mode, StartSUBTRANS has been called already. We 
> could truncate pg_subtrans there too when hot standby is enabled. But 
> this is only about the startup checkpoint at the end of recovery, so I'm 
> inclined to not change that, not right now just before release anyway, 
> just in case we're missing something...
> 
> However, is it safe to use GetOldestXMin() during recovery? Or to put it 
> other way, is GetOldestXMin() functioning correctly during hot standby? 
> It only scans through the ProcArray, but not the known-assigned xids 
> array. That seems like an oversight that needs to be fixed.

Yes, thats correct. Otherwise the patch is fine.

I'm working on this now and will commit something shortly.

-- 
 Simon Riggs           www.2ndQuadrant.com
 PostgreSQL Development, 24x7 Support, Training and Services


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to