aboutsummaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-10-20 15:00:10 +0200
committerAlex Auvolat <alex@adnab.me>2023-10-20 15:00:10 +0200
commitf5b09727815523a1bd4ba5f62d892b2b45b5bed6 (patch)
tree6ba6492e2df9663007f6af09f8108532a284ded5 /script
parentd148b83d4f440dc79b2ed08eaa171aca0e2037b0 (diff)
downloadgarage-f5b09727815523a1bd4ba5f62d892b2b45b5bed6.tar.gz
garage-f5b09727815523a1bd4ba5f62d892b2b45b5bed6.zip
jepsen: register crdt read-after-write is fixed with deleteobject patch
Diffstat (limited to 'script')
-rw-r--r--script/jepsen.garage/README.md11
-rw-r--r--script/jepsen.garage/Vagrantfile1
-rw-r--r--script/jepsen.garage/src/jepsen/garage.clj3
-rw-r--r--script/jepsen.garage/src/jepsen/garage/reg.clj3
4 files changed, 9 insertions, 9 deletions
diff --git a/script/jepsen.garage/README.md b/script/jepsen.garage/README.md
index da6f0b77..4c3c70b3 100644
--- a/script/jepsen.garage/README.md
+++ b/script/jepsen.garage/README.md
@@ -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
diff --git a/script/jepsen.garage/Vagrantfile b/script/jepsen.garage/Vagrantfile
index c40c600d..d0e545d3 100644
--- a/script/jepsen.garage/Vagrantfile
+++ b/script/jepsen.garage/Vagrantfile
@@ -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
diff --git a/script/jepsen.garage/src/jepsen/garage.clj b/script/jepsen.garage/src/jepsen/garage.clj
index ce02b7f7..a566d9be 100644
--- a/script/jepsen.garage/src/jepsen/garage.clj
+++ b/script/jepsen.garage/src/jepsen/garage.clj
@@ -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."
diff --git a/script/jepsen.garage/src/jepsen/garage/reg.clj b/script/jepsen.garage/src/jepsen/garage/reg.clj
index ecc96590..6772abfe 100644
--- a/script/jepsen.garage/src/jepsen/garage/reg.clj
+++ b/script/jepsen.garage/src/jepsen/garage/reg.clj
@@ -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