From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | ダンミンフーン <dangminh-huong(at)mxm(dot)nes(dot)nec(dot)co(dot)jp> |
Cc: | pgsql-bugs(at)postgresql(dot)org, 'Akio Iwaasa' <iwaasa(at)mxs(dot)nes(dot)nec(dot)co(dot)jp> |
Subject: | Re: After promote, DB can not UPDATE with SAVEPOINT (could not access status of transaction 1409172) |
Date: | 2013-08-22 13:30:35 |
Message-ID: | 20130822133035.GA17006@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Hi,
On 2013-08-22 22:17:40 +0900, ダンミンフーン wrote:
> I've get found out that issue in my project.
> Update in PRIMARY while pg_basebackup is performing,
> Can cause the STANDBY could not UPDATE after promote.
>
> In Standby Node, when first XID of a page come, pg_subtrans
> must be extended by ExtendSUBTRANS function.
>
> But if that XID created while pg_basebackup (with "-x" option)
> was performing, it did not extend.
>
> Due to that, after basebackup complete, start that DB and do
> promote complete. It failed in SAVEPOINT UPDATE query like follows.
>
> ---
> postgres=# BEGIN;
> postgres=# SAVEPOINT testsavepoint;
> postgres=# UPDATE test_tbl SET name = 'test';
> ERROR: could not access status of transaction 1409172
> DETAIL: Could not read from file "pg_subtrans/0015" at offset 131072: Success.
> ---
>
> I've also confirm source and realize that,
>
> When StartupXLOG call RecordKnownAssignedTransactionIds
> (in the "main redo apply loop"), the "standbyState" still
> was STANDBY_INITIALIZED, so it is returned without goto
> ExtendSUBTRANS (to check and extend space for pg_subtrans).
>
> Therefor, after STANDBY promote, when UPDATE query made by
> SAVEPOINT is executed, the process as follow is performed
> and get the above ERROR in SimpleLruReadPage function.
>
> AssignTransactionId => SubTransSetParent => SubTransSetParent => SimpleLruReadPage
>
> I think that ExtendSUBTRANS must be called even if "standbyState"
> in STANDBY_INITIALIZED in order to avoid the case above.
>
> I also attach a patch. Could anyone confirm for me.
Nice diagnosis and thanks for the patch!
I think the the issue has already been fixed while investigating a
similar issue, could you verify that the current git version works for
you?
c.f. commit 99ee15b315c187045a95db7b27fd9d866aea93e0
Greetings,
Andres Freund
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | pchan | 2013-08-22 23:52:15 | BUG #8392: encounter intermittent "ERROR: out of memory" on hot standby |
Previous Message | ダンミンフーン | 2013-08-22 13:17:40 | After promote, DB can not UPDATE with SAVEPOINT (could not access status of transaction 1409172) |