From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Simon Riggs <simon(at)2ndquadrant(dot)com> |
Cc: | pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: [COMMITTERS] pgsql: Rework subtransaction commit protocol for hot standby. |
Date: | 2008-10-22 17:25:18 |
Message-ID: | 9243.1224696318@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
alvherre(at)postgresql(dot)org (Alvaro Herrera) writes:
> Rework subtransaction commit protocol for hot standby.
I think this patch broke something. In CVS HEAD, replay of a
transaction commit record with a subtransaction dies with an assert
failure:
#0 0xc0141220 in ?? () from /usr/lib/libc.1
#1 0xc00aa7ec in ?? () from /usr/lib/libc.1
#2 0xc008c2b8 in ?? () from /usr/lib/libc.1
#3 0xc0086d9c in ?? () from /usr/lib/libc.1
#4 0x41288c in ExceptionalCondition (
conditionName=0x6deb8 "!(((*byteptr >> bshift) & ((1 << 2) - 1)) == 0 || ((*byteptr >> bshift) & ((1 << 2) - 1)) == 0x03 || ((*byteptr >> bshift) & ((1 << 2) - 1)) == status)", errorType=0x6dde4 "FailedAssertion",
fileName=0x6ddf4 "clog.c", lineNumber=330) at assert.c:57
#5 0x171680 in TransactionIdSetStatusBit (xid=2063810256, status=2063810248,
lsn={xlogid = 0, xrecoff = 0}, slotno=0) at clog.c:330
#6 0x1714e8 in TransactionIdSetPageStatus (xid=84, nsubxids=1,
subxids=0x4008dd78, status=2063840993, lsn={xlogid = 0, xrecoff = 0},
pageno=0) at clog.c:290
#7 0x1712dc in TransactionIdSetTreeStatus (xid=19394, nsubxids=1,
subxids=0x4008dd78, status=1, lsn={xlogid = 0, xrecoff = 0}) at clog.c:204
#8 0x1722f8 in TransactionIdCommitTree (xid=2063670312, nxids=2063839972,
xids=0x7b011cf0) at transam.c:266
#9 0x1785b8 in xact_redo_commit (xlrec=0x4008dd48, xid=19394) at xact.c:4222
#10 0x1788ec in xact_redo (lsn={xlogid = 0, xrecoff = 211142048},
record=0x4008dd28) at xact.c:4327
#11 0x182a28 in StartupXLOG () at xlog.c:5146
I can't reproduce this 100% reliably, but the case where I saw it came
from mistakenly inserting
Assert(!IsA(node, AppendRelInfo));
into flatten_join_alias_vars_mutator and then running the serial
regression tests. This case *can* happen, but it doesn't occur
until late in the regression tests. The recovery ensuing from the
assert failure crashes maybe one time in two --- likely has something
to do with when the last checkpoint happened.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2008-10-22 17:36:34 | Re: [COMMITTERS] pgsql: Rework subtransaction commit protocol for hot standby. |
Previous Message | Teodor Sigaev | 2008-10-22 12:56:25 | pgsql: Fix GiST's killing tuple: GISTScanOpaque->curpos wasn't |
From | Date | Subject | |
---|---|---|---|
Next Message | Simon Riggs | 2008-10-22 17:36:34 | Re: [COMMITTERS] pgsql: Rework subtransaction commit protocol for hot standby. |
Previous Message | Josh Berkus | 2008-10-22 16:49:05 | Reminder: only 10 days until final CommitFest |