Re: Potential G2-item cycles under serializable isolation
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Kyle Kingsbury <aphyr@jepsen.io>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2020-06-03T23:11:41Z
Lists: pgsql-bugs
On Wed, Jun 3, 2020 at 2:35 PM Kyle Kingsbury <aphyr@jepsen.io> wrote: > It looks like you're seeing a much higher txn success rate than I am--possibly due to your tuning? Might be worth adjusting --rate and/or --concurrency upwards I can see what I assume is the same problem (a failure/table flip and a huge graph) with "--concurrency 150 -r 10000", and with autovacuum disabled on the Postgres side (this is the same relatively tuned Postgres configuration that I used when Jepsen passed for me). It's difficult to run the tests, so it's hard to isolate without it taking a long time. BTW, the tests are kind of flappy. The Linux OOM killer just killed Java after 20 minutes or so, for example. I assume that this is to be expected with the settings cranked up like this -- the analysis will take longer and use more memory, too. Any tips on limiting that? Is there any reason to think that running the same test twice will affect the outcome of the second test? I also see this sometimes, even though I thought I fixed it earlier -- it seems to happen at random: Caused by: java.lang.AssertionError: Assert failed: No transaction wrote 8363 2 t2 The fact that Kyle saw such a high number of failed transactions, which are difficult to reproduce here seems to suggest that the issue is related to running out of shared memory for predicate locks and/or bloat (which tends to have the side effect of increasing the need for predicate locks). I continue to suspect that this is related to an edge case with predicate locks. It could be related to running out of predicate locks -- maybe an issue with the lock escalation? That would tend to increase the number of failures by quite a lot. -- Peter Geoghegan
Commits
-
Doc: Add references for SI and SSI.
- 4c897197d793 9.5.23 landed
- 7295ac9c6c71 9.6.19 landed
- e2aca0d02d97 10.14 landed
- 648e56d3984d 11.9 landed
- eb1286413c0a 12.4 landed
- 4701efa9f741 13.0 landed
- 1575fbf1ac3c 14.0 landed
-
Improve comments for [Heap]CheckForSerializableConflictOut().
- 44eff2841059 13.0 landed
- 7aa4fb592530 14.0 landed
-
Avoid update conflict out serialization anomalies.
- 5940ffb22131 14.0 landed
- 6df7105e5d50 13.0 landed
- e620a38c23b9 12.4 landed
- dd616f2ec1c5 11.9 landed
- 19a6e1bc3083 10.14 landed
- e81dc2b7e2c4 9.6.19 landed
- c05f6b354ffe 9.5.23 landed
-
Implement genuine serializable isolation level.
- dafaa3efb75c 9.1.0 cited