Current test implementation is the same for all isolation levels, but only REPEATABLE READ case failed
PR Draft - https://github.com/yugabyte/jepsen/pull/69/files
Common code (only isolation level changed and checker params)
(let [txn (:value op)
use-txn? (< 1 (count txn))
txn' (if use-txn?
(j/with-db-transaction [c c {:isolation isolation}]
(mapv (partial mop! c test) txn))
(mapv (partial mop! c test) txn))]
There is a lot consistency violations in analysis result. Serialisable and read committed test are fine and doesn't fail so easily.
T1 < T2, because T1 did not observe T2's append of 604 to 47.
However, T2 < T1, because T1 appended 753 after T2 appended 605 to 47: a contradiction!
3. G-nonadjacent
Very tricky inconsistency since the reason may be hidden from report. We saw it previously in append test and there was Read You Writes violation, here we have another one which is looks like more related to dirty writes.
Jira Link: DB-2786
Description
Added REPEATABLE READ Elle test in Jepsen. Since we threat REPEATABLE READ transactions as SNAPSHOT, following configuration used for test.
Current test implementation is the same for all isolation levels, but only REPEATABLE READ case failed PR Draft - https://github.com/yugabyte/jepsen/pull/69/files Common code (only isolation level changed and checker params)
There is a lot consistency violations in analysis result. Serialisable and read committed test are fine and doesn't fail so easily.
20220217T170008.000Z.zip
Here is some examples:
We append In single transaction 953 and 954 values into key 54, while in other transaction we read only 954
Then:
G-nonadjacent #3 Let: T1 = {:type :ok, :f :txn, :value [[:append 63 682] [:r 62 [...] [:append 61 336] [:append 61 337]], :time 321916346345, :process 1216, :op-timing ["2022-02-17_17:05:53.600" "2022-02-17_17:05:56.186"], :index 57642} T2 = {:type :ok, :f :txn, :value [[:append 59 900] [:r 63 [1... 756 706 682]]], :time 322886762699, :process 1359, :op-timing ["2022-02-17_17:05:52.532" "2022-02-17_17:05:57.157"], :index 57646} T3 = {:type :ok, :f :txn, :value [[:append 63 667] [:append 63 668]], :time 322650336679, :process 1074, :op-timing ["2022-02-17_17:05:53.344" "2022-02-17_17:05:56.920"], :index 57645} T4 = {:type :ok, :f :txn, :value [[:append 63 683] [:r 61 [.... 353 337]]], :time 323927267411, :process 1124, :op-timing ["2022-02-17_17:05:53.600" "2022-02-17_17:05:58.197"], :index 57648}
Then: