jepsen: register crdt read-after-write is fixed with deleteobject patch

This commit is contained in:
Alex Auvolat 2023-10-20 15:00:10 +02:00
parent d148b83d4f
commit f5b0972781
4 changed files with 9 additions and 9 deletions

View file

@ -45,7 +45,7 @@ clocks are scrambled.
### Register linear, with timestamp patch
Command: `lein run test --nodes-file nodes.vagrant --time-limit 60 --rate 20 --concurrency 20 --workload reg1 --ops-per-key 100 -I`
Command: `lein run test --nodes-file nodes.vagrant --time-limit 60 --rate 20 --concurrency 20 --workload reg1 --ops-per-key 100 --patch tsfix1`
Results:
@ -62,15 +62,13 @@ Results: fails with a simple clock-scramble nemesis.
Explanation: old values are not overwritten correctly when their timestamps are in the future.
### Read-after-write CRDT register model, with timestamp patch
### Read-after-write CRDT register model, with timestamp patch (v2 with DeleteObject fix as well)
Command: `lein run test --nodes-file nodes.vagrant --time-limit 60 --rate 100 --concurrency 100 --workload reg2 --ops-per-key 100 -I`
Command: `lein run test --nodes-file nodes.vagrant --time-limit 60 --rate 100 --concurrency 100 --workload reg2 --ops-per-key 100 --patch tsfix2`
Results:
- Failures with clock-scramble nemesis + partition nemesis ???? TODO INVESTIGATE
-> the issue seems to be only after DeleteObject (deletions are not always taken into account),
the issue does not appear if we are using only PutObject with an actual object content
- No failures with clock-scramble nemesis + partition nemesis
- TODO: layout reconfiguration nemesis
@ -123,6 +121,7 @@ The inconsistencies seemed to always happenned after writing a nil value, which
instead of a PutObject. By removing the possibility of writing nil values, therefore only doing
PutObject calls, the issue disappears. There is therefore an issue to fix in DeleteObject.
The issue in DeleteObject seems to have been fixed by commit `c82d91c6bccf307186332b6c5c6fc0b128b1b2b1`
## License

View file

@ -13,6 +13,7 @@ Vagrant.configure("2") do |config|
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.memory = "512"
vb.customize ["modifyvm", :id, "--vram=12"]
end
config.vm.provision "shell", inline: <<-SHELL

View file

@ -23,7 +23,8 @@
(def patches
"A map of patch names to Garage builds"
{"default" "v0.9.0"
"tsfix1" "d146cdd5b66ca1d3ed65ce93ca42c6db22defc09"})
"tsfix1" "d146cdd5b66ca1d3ed65ce93ca42c6db22defc09"
"tsfix2" "c82d91c6bccf307186332b6c5c6fc0b128b1b2b1"})
(def cli-opts
"Additional command line options."

View file

@ -112,8 +112,7 @@
(range)
(fn [k]
(->>
; (gen/mix [op-get op-put op-del])
(gen/mix [op-get op-put])
(gen/mix [op-get op-put op-del])
(gen/limit (:ops-per-key opts)))))})
(defn workload1