Re: BUG #15727: PANIC: cannot abort transaction 295144144, it was already committed
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: r.zharkov@postgrespro.ru
Cc: Andres Freund <andres@anarazel.de>,
Alvaro Herrera <alvherre@2ndquadrant.com>,
pgsql-bugs@lists.postgresql.org
Date: 2019-04-02T17:13:58Z
Lists: pgsql-bugs
r.zharkov@postgrespro.ru writes: > I made the new core file: Thanks, but this isn't much help --- it just shows what we already know, ie the "cannot abort transaction" error occurs after some other error was thrown. What would be more helpful would be to adjust the places that can throw the "unexpected table_lock_tuple status" error text to be PANIC rather than ERROR, so that the core dump would show a stack trace showing how we got to whichever of those places this is. Or, run the test with a higher log verbosity, so that you can find out which of those places is throwing the error to begin with; then just PANIC-ize that one. FWIW, I see six potential candidates, not two: pgsql/src/backend/commands/trigger.c: 3380: elog(ERROR, "unexpected table_lock_tuple status: %u", test); pgsql/src/backend/executor/nodeLockRows.c: 232: elog(ERROR, "unexpected table_lock_tuple status: %u", pgsql/src/backend/executor/nodeModifyTable.c: 881: elog(ERROR, "unexpected table_lock_tuple status: %u", pgsql/src/backend/executor/nodeModifyTable.c: 1384: elog(ERROR, "unexpected table_lock_tuple status: %u", pgsql/src/backend/executor/execReplication.c: 211: elog(ERROR, "unexpected table_lock_tuple status: %u", res); pgsql/src/backend/executor/execReplication.c: 375: elog(ERROR, "unexpected table_lock_tuple status: %u", res); regards, tom lane
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