Re: BUG #17116: Assert failed in SerialSetActiveSerXmin() on commit of parallelized serializable transaction
Thomas Munro <thomas.munro@gmail.com>
From: Thomas Munro <thomas.munro@gmail.com>
To: Alexander Lakhin <exclusion@gmail.com>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2021-07-28T05:02:31Z
Lists: pgsql-bugs
Attachments
- v3-0001-Fix-assert-failures-in-parallel-SERIALIZABLE-READ.patch (text/x-patch) patch v3-0001
On Wed, Jul 28, 2021 at 9:00 AM Alexander Lakhin <exclusion@gmail.com> wrote: > Thanks! With the new fix applied, my multiple installcheck test survives > 100+ iterations. Thanks. Here's an updated version. No code change, but now with a change to serializable-parallel-2.sql so that the second assertion you mentioned fails on unpatched master. The intention of that test was to exercise the SXACT_FLAG_RO_SAFE optimisation in a parallel query, and it did that, but in a sort of degenerate way: sequential scans acquire predicate locks *before entering parallel mode*, so the optimisation is triggered immediately. This version triggers the optimisation in a parallel worker, and then the final cleanup happens in the leader, which is the interesting case. > (Except for read-only-anomaly-3, that causes another > assertion fail but I believe that it's not related to the initial issue > and deserves another bug report.) Huh. I tried and failed to find that one with concurrent runs. I'll wait for your next report before I do anything, just in case there's a connection.
Commits
-
Fix race in SERIALIZABLE READ ONLY.
- d1c0f81e7273 11.20 landed
- e30fd0942493 12.15 landed
- ae632f7a3147 13.11 landed
- d811d74be353 14.8 landed
- af397c6c27b7 15.3 landed
- 65e388d4182a 16.0 landed
-
Fix assert failures in parallel SERIALIZABLE READ ONLY.
- afa122e41c65 12.15 landed
- a0f55fc86ab7 13.11 landed
- e9051ecd58e9 14.8 landed
- 055990904a17 15.3 landed
- 47c0accbe05b 16.0 landed
-
Fix SxactGlobalXmin tracking.
- 47a338cfcd67 12.0 cited
-
There's a small window wherein a transaction is committed but not yet
- bdaabb9b22ca 9.2.0 cited