On Wed, Aug 4, 2021 at 7:55 PM Pavel Borisov <pashkin.elfe@gmail.com> wrote: > >> > Greg, thanks for the fast response! I suppose that a check for IsolationUsesXactSnapshot() is also useful in a GetTransactionSnapshot for the correct processing of a case with NULL transaction snapshot. > This corrects mentioned check-world test. > PFA v7 patch.
Ah, thanks for that (I didn't debug that failure). But is the coredump issue reproducible now? (using v7 and your test script)
Now I've run my test script attached above in the thread on v6 and v7 and quite soon got crashes with the Assert and a backtrace identical to the original one. So it may be useful for further development, but now it is not enough to fix the original crash.
And the same script run on v2/v5 patch was completed without crash at every isolation level, I've tested i.e. READ COMMITTED, REPEATABLE READ and SERIALIZABLE. If I remember correctly none of us could demonstrate any errors with REPEATABLE READ and SERIALIZABLE on v2/v5. That fact was the base of my proposal to commit v2/v5 i.e. to fix the obvious bug and let the further improvements (if any) be potentially done later.
At SERIALIZABLE level with v2/v5 I get an error which I don't have before the patch (but no crash):
pgbench: error: client 6 script 0 aborted in command 594 query 0: ERROR: could not serialize access due to read/write dependencies among transactions
DETAIL: Reason code: Canceled on identification as a pivot, during conflict out checking.