From f5b09727815523a1bd4ba5f62d892b2b45b5bed6 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 20 Oct 2023 15:00:10 +0200 Subject: [PATCH] jepsen: register crdt read-after-write is fixed with deleteobject patch --- script/jepsen.garage/README.md | 11 +++++------ script/jepsen.garage/Vagrantfile | 1 + script/jepsen.garage/src/jepsen/garage.clj | 3 ++- script/jepsen.garage/src/jepsen/garage/reg.clj | 3 +-- 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