Re: pg_subtrans keeps bloating up in the standby

Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>

From: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
To: Fujii Masao <masao.fujii@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>, "Kolb, Harald (NSN - DE/Munich)" <harald.kolb@nsn.com>
Date: 2010-08-27T14:25:58Z
Lists: pgsql-hackers
On 27/08/10 16:39, Fujii Masao wrote:
> I received the off-list email reporting that pg_subtrans keeps bloating up
> in the standby, from Harald (Thanks!). I investigated this issue and found
> that the standby doesn't truncate pg_subtrans at all even though HS keeps
> extending it. In the master, a checkpoint calls TruncateSUBTRANS() and
> truncate old pg_subtrans entries, but in the standby, a restartpoint doesn't
> do that. And I found the following comment in CreateRestartPoint():
>
> 	/*
> 	 * Currently, there is no need to truncate pg_subtrans during recovery. If
> 	 * we did do that, we will need to have called StartupSUBTRANS() already
> 	 * and then TruncateSUBTRANS() would go here.
> 	 */
>
> I'm not sure why there is no need to truncate pg_subtrans during recovery.
> To fix the issue, we should make a restartpoint call TruncateSUBTRANS().
> Thought?

Hmm, agreed, seems like an oversight in hot standby. Before that, we 
didn't update pg_subtrans during recovery, so there was no point 
truncating it. But in hot standby, we do update it, so we need to 
truncate it too.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com