jepsen: register crdt read-after-write is fixed with deleteobject patch
This commit is contained in:
parent
d148b83d4f
commit
f5b0972781
@ -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
|
||||||
|
1
script/jepsen.garage/Vagrantfile
vendored
1
script/jepsen.garage/Vagrantfile
vendored
@ -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
|
||||||
|
@ -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."
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user