Re: BUG #15727: PANIC: cannot abort transaction 295144144, it was already committed
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, r.zharkov@postgrespro.ru, pgsql-bugs@lists.postgresql.org
Date: 2019-04-02T16:13:20Z
Lists: pgsql-bugs
Hi, On 2019-04-02 12:51:08 -0300, Alvaro Herrera wrote: > On 2019-Apr-02, Tom Lane wrote: > > > Andres Freund <andres@anarazel.de> writes: > > >> 2019-04-01 15:27:38.829 +07 [7524] STATEMENT: UPDATE pgbench_accounts SET > > >> abalance = 1 WHERE aid = 1; > > >> 2019-04-01 15:27:38.829 +07 [7524] PANIC: cannot abort transaction > > >> 400048276, it was already committed > > > > > But that's probably a separate issue. > > > > What that seems to indicate is that the "unexpected table_lock_tuple > > status" error was thrown during commit, which seems pretty odd. > > AFAICS this error can only come from ExecDelete(), because the value 1 > is TM_Invisible and the other callsites where the "unexpected > table_lock_tuple" error appears use different wording for that one. Hm? Why couldn't it be the ExecUpdate() case? > Maybe it's the result of a deferred constraint being checked at that > time ... maybe it's trying to honor an "on cascade delete" setting for > an FK, and the affected tuple has already been updated or deleted? Then it ought to get TM_Deleted, no? We ought to wait till that transaction commits, and then roll back. So there's something odd happening here. I suspect there has to be some additional log output or such to explain this. Greetings, Andres Freund
Commits
-
Fix GetNewTransactionId()'s interaction with xidVacLimit.
- f7feb020c3d8 12.0 landed
-
Fix example in comment.
- 16954e22e2a8 12.0 cited
-
Fix EvalPlanQualStart to handle partitioned result rels correctly.
- 1b5bbe4bcc91 10.8 landed
- b291488da513 11.3 landed
- a8cb8f124679 12.0 landed
-
Fix a number of issues around modifying a previously updated row.
- 41f5e04aec6c 12.0 landed
-
Use FullTransactionId for the transaction stack.
- ad308058cc86 12.0 cited
-
Add basic infrastructure for 64 bit transaction IDs.
- 2fc7af5e9660 12.0 cited
-
tableam: Add tuple_{insert, delete, update, lock} and use.
- 5db6df0c0117 12.0 cited
-
Throw error if expiring tuple is again updated or deleted.
- 6868ed7491b7 9.3.0 cited