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 ### 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: 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. 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: Results:
- Failures with clock-scramble nemesis + partition nemesis ???? TODO INVESTIGATE - No failures with clock-scramble nemesis + partition nemesis
-> 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
- TODO: layout reconfiguration 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 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. 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 ## License

View file

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

View file

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

View file

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