Re: Parallel scan with SubTransGetTopmostTransaction assert coredump
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Greg Nancarrow <gregn4422@gmail.com>
Cc: Pavel Borisov <pashkin.elfe@gmail.com>,
Tomas Vondra <tomas.vondra@enterprisedb.com>, Maxim Orlov <m.orlov@postgrespro.ru>, Michael Paquier <michael@paquier.xyz>, Pengchengliu <pengchengliu@tju.edu.cn>, Andres Freund <andres@anarazel.de>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2021-08-24T15:37:15Z
Lists: pgsql-hackers
On Tue, Aug 24, 2021 at 12:20 AM Greg Nancarrow <gregn4422@gmail.com> wrote: > I initially thought this too, but RestoreTransactionSnapshot() sets up > the resultant transaction snapshot in "CurrentSnapshot", which is > static to snapmgr.c (like the other pointers to valid snapshots) and I > didn't really want to mess with the visibility of that, to allow a > call to PushActiveSnapshot(CurrentSnapshot) in parallel.c. Also, I > wasn't sure if it was safe to call GetTransactionSnapshot() here > without the risk of unwanted side-effects - but, looking at it again, > I think it is probably OK, so I did use it in my revised patch > (attached) and removed > that new function RestoreTxnSnapshotAndSetAsActive(). Do you agree > that it is OK to call GetTransactionSnapshot() here? I guess I was thinking more of rejiggering things so that we save the results of each RestoreSnapshot() call in a local variable, e.g. asnapshot and tsnapshot. And then I think we could just RestoreTransactionSnapshot() on whichever one we want, and then PushActiveSnapshot(asnapshot) either way. I think it would be worth trying to move the PushActiveSnapshot() call out of the if statement instead it in two places, written differently but doing the same thing. > I agree, that is a better comment and detailed description, but didn't > you mean "If the transaction isolation level is REPEATABLE READ or > SERIALIZABLE ..."? I sure did! -- Robert Haas EDB: http://www.enterprisedb.com
Commits
-
Fix broken snapshot handling in parallel workers.
- 96f6ef9fe451 10.19 landed
- 198cf81e2c64 11.14 landed
- f4b77e82ebf4 12.9 landed
- bc062cb93823 13.5 landed
- 11c1239881b3 14.0 landed
- a780b2fcce6c 15.0 landed
-
Doc: move some catalogs.sgml entries to the right place.
- 713a431c781f 14.0 cited
-
Stamp 13.2.
- 3fb4c75e857a 13.2 cited
-
Create an infrastructure for parallel computation in PostgreSQL.
- 924bcf4f16d5 9.5.0 cited