From 87dfaf2eb9d345bb5d4508248c46cc713df75e64 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Wed, 3 Apr 2024 14:14:13 +0200 Subject: [PATCH 1/3] [doc-units] document how interval value is parsed --- doc/book/reference-manual/configuration.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/book/reference-manual/configuration.md b/doc/book/reference-manual/configuration.md index 1ac2051e..39936094 100644 --- a/doc/book/reference-manual/configuration.md +++ b/doc/book/reference-manual/configuration.md @@ -376,10 +376,12 @@ if geographical replication is used. If this value is set, Garage will automatically take a snapshot of the metadata DB file at a regular interval and save it in the metadata directory. -This can allow to recover from situations where the metadata DB file is corrupted, -for instance after an unclean shutdown. -See [this page](@/documentation/operations/recovering.md#corrupted_meta) for details. +This parameter can take any duration string that can be parsed by +the [`parse_duration`](https://docs.rs/parse_duration/latest/parse_duration/#syntax) crate. +Snapshots can allow to recover from situations where the metadata DB file is +corrupted, for instance after an unclean shutdown. See [this +page](@/documentation/operations/recovering.md#corrupted_meta) for details. Garage keeps only the two most recent snapshots of the metadata DB and deletes older ones automatically. From c051db82047d8435f96884f5fb06c102e9b7f603 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 5 Apr 2024 22:57:00 +0200 Subject: [PATCH 2/3] jepsen testing of Garage v1.0.0-rc1 --- script/jepsen.garage/Vagrantfile | 14 +++++++------- script/jepsen.garage/all_tests_1.sh | 7 +++---- script/jepsen.garage/src/jepsen/garage.clj | 4 +++- script/jepsen.garage/src/jepsen/garage/daemon.clj | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/script/jepsen.garage/Vagrantfile b/script/jepsen.garage/Vagrantfile index b54c2426..2ac24f98 100644 --- a/script/jepsen.garage/Vagrantfile +++ b/script/jepsen.garage/Vagrantfile @@ -30,11 +30,11 @@ Vagrant.configure("2") do |config| config.vm.define "n6" do |config| vm(config, "n6", "192.168.56.26") end config.vm.define "n7" do |config| vm(config, "n7", "192.168.56.27") end - config.vm.define "n8" do |config| vm(config, "n8", "192.168.56.28") end - config.vm.define "n9" do |config| vm(config, "n9", "192.168.56.29") end - config.vm.define "n10" do |config| vm(config, "n10", "192.168.56.30") end - config.vm.define "n11" do |config| vm(config, "n11", "192.168.56.31") end - config.vm.define "n12" do |config| vm(config, "n12", "192.168.56.32") end - config.vm.define "n13" do |config| vm(config, "n13", "192.168.56.33") end - config.vm.define "n14" do |config| vm(config, "n14", "192.168.56.34") end + #config.vm.define "n8" do |config| vm(config, "n8", "192.168.56.28") end + #config.vm.define "n9" do |config| vm(config, "n9", "192.168.56.29") end + #config.vm.define "n10" do |config| vm(config, "n10", "192.168.56.30") end + #config.vm.define "n11" do |config| vm(config, "n11", "192.168.56.31") end + #config.vm.define "n12" do |config| vm(config, "n12", "192.168.56.32") end + #config.vm.define "n13" do |config| vm(config, "n13", "192.168.56.33") end + #config.vm.define "n14" do |config| vm(config, "n14", "192.168.56.34") end end diff --git a/script/jepsen.garage/all_tests_1.sh b/script/jepsen.garage/all_tests_1.sh index b5397d13..f9770865 100755 --- a/script/jepsen.garage/all_tests_1.sh +++ b/script/jepsen.garage/all_tests_1.sh @@ -3,11 +3,10 @@ set -x #for ppatch in task3c task3a tsfix2; do -for ppatch in tsfix2; do +for ppatch in v093 v1rc1; do #for psc in c cp cdp r pr cpr dpr; do - for psc in cdp r pr cpr dpr; do - #for ptsk in reg2 set1 set2; do - for ptsk in set1; do + for ptsk in reg2 set2; do + for psc in c cp cdp r pr cpr dpr; do for irun in $(seq 10); do lein run test --nodes-file nodes.vagrant \ --time-limit 60 --rate 100 --concurrency 100 --ops-per-key 100 \ diff --git a/script/jepsen.garage/src/jepsen/garage.clj b/script/jepsen.garage/src/jepsen/garage.clj index 446b81de..053ad8b6 100644 --- a/script/jepsen.garage/src/jepsen/garage.clj +++ b/script/jepsen.garage/src/jepsen/garage.clj @@ -38,7 +38,9 @@ "tsfix2" "c82d91c6bccf307186332b6c5c6fc0b128b1b2b1" "task3a" "707442f5de416fdbed4681a33b739f0a787b7834" "task3b" "431b28e0cfdc9cac6c649193cf602108a8b02997" - "task3c" "0041b013a473e3ae72f50209d8f79db75a72848b"}) + "task3c" "0041b013a473e3ae72f50209d8f79db75a72848b" + "v093" "v0.9.3" + "v1rc1" "v1.0.0-rc1"}) (def cli-opts "Additional command line options." diff --git a/script/jepsen.garage/src/jepsen/garage/daemon.clj b/script/jepsen.garage/src/jepsen/garage/daemon.clj index d407dd29..0ea773fb 100644 --- a/script/jepsen.garage/src/jepsen/garage/daemon.clj +++ b/script/jepsen.garage/src/jepsen/garage/daemon.clj @@ -43,7 +43,7 @@ "rpc_bind_addr = \"0.0.0.0:3901\"\n" "rpc_public_addr = \"" node ":3901\"\n" "db_engine = \"lmdb\"\n" - "replication_mode = \"2\"\n" + "replication_mode = \"3\"\n" "data_dir = \"" data-dir "\"\n" "metadata_dir = \"" meta-dir "\"\n" "[s3_api]\n" From 7dd7cb5759635b3a1c18660a171bd34a10043f6c Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Mon, 8 Apr 2024 11:18:19 +0200 Subject: [PATCH 3/3] [rel-0.9.4] upgrade version to v0.9.4 --- Cargo.lock | 20 ++--- Cargo.nix | 138 ++++++++++++++++---------------- Cargo.toml | 18 ++--- doc/book/cookbook/real-world.md | 10 +-- script/helm/garage/Chart.yaml | 4 +- src/api/Cargo.toml | 2 +- src/block/Cargo.toml | 2 +- src/db/Cargo.toml | 2 +- src/garage/Cargo.toml | 2 +- src/model/Cargo.toml | 2 +- src/net/Cargo.toml | 2 +- src/rpc/Cargo.toml | 2 +- src/table/Cargo.toml | 2 +- src/util/Cargo.toml | 2 +- src/web/Cargo.toml | 2 +- 15 files changed, 105 insertions(+), 105 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4cf5bd0..5c974474 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "garage" -version = "0.9.3" +version = "0.9.4" dependencies = [ "assert-json-diff", "async-trait", @@ -1332,7 +1332,7 @@ dependencies = [ [[package]] name = "garage_api" -version = "0.9.3" +version = "0.9.4" dependencies = [ "argon2", "async-trait", @@ -1381,7 +1381,7 @@ dependencies = [ [[package]] name = "garage_block" -version = "0.9.3" +version = "0.9.4" dependencies = [ "arc-swap", "async-compression", @@ -1408,7 +1408,7 @@ dependencies = [ [[package]] name = "garage_db" -version = "0.9.3" +version = "0.9.4" dependencies = [ "err-derive", "heed", @@ -1423,7 +1423,7 @@ dependencies = [ [[package]] name = "garage_model" -version = "0.9.3" +version = "0.9.4" dependencies = [ "arc-swap", "async-trait", @@ -1452,7 +1452,7 @@ dependencies = [ [[package]] name = "garage_net" -version = "0.9.3" +version = "0.9.4" dependencies = [ "arc-swap", "async-trait", @@ -1478,7 +1478,7 @@ dependencies = [ [[package]] name = "garage_rpc" -version = "0.9.3" +version = "0.9.4" dependencies = [ "arc-swap", "async-trait", @@ -1513,7 +1513,7 @@ dependencies = [ [[package]] name = "garage_table" -version = "0.9.3" +version = "0.9.4" dependencies = [ "arc-swap", "async-trait", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "garage_util" -version = "0.9.3" +version = "0.9.4" dependencies = [ "arc-swap", "async-trait", @@ -1569,7 +1569,7 @@ dependencies = [ [[package]] name = "garage_web" -version = "0.9.3" +version = "0.9.4" dependencies = [ "err-derive", "futures", diff --git a/Cargo.nix b/Cargo.nix index 44cb23b5..d08f6e6a 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -34,7 +34,7 @@ args@{ ignoreLockHash, }: let - nixifiedLockHash = "1d6c837fe8357cbb1b231c1843bde1729c9864f05e5ae251be045450a0b592e3"; + nixifiedLockHash = "9ea4045dd09421583b69811f95797af9c1f16239ecce89d8a6f5a9319d7d8526"; workspaceSrc = if args.workspaceSrc == null then ./. else args.workspaceSrc; currentLockHash = builtins.hashFile "sha256" (workspaceSrc + /Cargo.lock); lockHashIgnored = if ignoreLockHash @@ -58,17 +58,17 @@ in { cargo2nixVersion = "0.11.0"; workspace = { - garage_db = rustPackages.unknown.garage_db."0.9.3"; - garage_util = rustPackages.unknown.garage_util."0.9.3"; - garage_net = rustPackages.unknown.garage_net."0.9.3"; - garage_rpc = rustPackages.unknown.garage_rpc."0.9.3"; + garage_db = rustPackages.unknown.garage_db."0.9.4"; + garage_util = rustPackages.unknown.garage_util."0.9.4"; + garage_net = rustPackages.unknown.garage_net."0.9.4"; + garage_rpc = rustPackages.unknown.garage_rpc."0.9.4"; format_table = rustPackages.unknown.format_table."0.1.1"; - garage_table = rustPackages.unknown.garage_table."0.9.3"; - garage_block = rustPackages.unknown.garage_block."0.9.3"; - garage_model = rustPackages.unknown.garage_model."0.9.3"; - garage_api = rustPackages.unknown.garage_api."0.9.3"; - garage_web = rustPackages.unknown.garage_web."0.9.3"; - garage = rustPackages.unknown.garage."0.9.3"; + garage_table = rustPackages.unknown.garage_table."0.9.4"; + garage_block = rustPackages.unknown.garage_block."0.9.4"; + garage_model = rustPackages.unknown.garage_model."0.9.4"; + garage_api = rustPackages.unknown.garage_api."0.9.4"; + garage_web = rustPackages.unknown.garage_web."0.9.4"; + garage = rustPackages.unknown.garage."0.9.4"; k2v-client = rustPackages.unknown.k2v-client."0.0.4"; }; "registry+https://github.com/rust-lang/crates.io-index".addr2line."0.21.0" = overridableMkRustCrate (profileName: rec { @@ -1871,9 +1871,9 @@ in }; }); - "unknown".garage."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/garage"); features = builtins.concatLists [ @@ -1902,15 +1902,15 @@ in format_table = (rustPackages."unknown".format_table."0.1.1" { inherit profileName; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.30" { inherit profileName; }).out; - garage_api = (rustPackages."unknown".garage_api."0.9.3" { inherit profileName; }).out; - garage_block = (rustPackages."unknown".garage_block."0.9.3" { inherit profileName; }).out; - garage_db = (rustPackages."unknown".garage_db."0.9.3" { inherit profileName; }).out; - garage_model = (rustPackages."unknown".garage_model."0.9.3" { inherit profileName; }).out; - garage_net = (rustPackages."unknown".garage_net."0.9.3" { inherit profileName; }).out; - garage_rpc = (rustPackages."unknown".garage_rpc."0.9.3" { inherit profileName; }).out; - garage_table = (rustPackages."unknown".garage_table."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; - garage_web = (rustPackages."unknown".garage_web."0.9.3" { inherit profileName; }).out; + garage_api = (rustPackages."unknown".garage_api."0.9.4" { inherit profileName; }).out; + garage_block = (rustPackages."unknown".garage_block."0.9.4" { inherit profileName; }).out; + garage_db = (rustPackages."unknown".garage_db."0.9.4" { inherit profileName; }).out; + garage_model = (rustPackages."unknown".garage_model."0.9.4" { inherit profileName; }).out; + garage_net = (rustPackages."unknown".garage_net."0.9.4" { inherit profileName; }).out; + garage_rpc = (rustPackages."unknown".garage_rpc."0.9.4" { inherit profileName; }).out; + garage_table = (rustPackages."unknown".garage_table."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; + garage_web = (rustPackages."unknown".garage_web."0.9.4" { inherit profileName; }).out; git_version = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".git-version."0.3.9" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; sodiumoxide = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".kuska-sodiumoxide."0.2.5-0" { inherit profileName; }).out; @@ -1949,9 +1949,9 @@ in }; }); - "unknown".garage_api."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_api."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_api"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/api"); features = builtins.concatLists [ @@ -1971,12 +1971,12 @@ in form_urlencoded = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".form_urlencoded."1.2.1" { inherit profileName; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.30" { inherit profileName; }).out; - garage_block = (rustPackages."unknown".garage_block."0.9.3" { inherit profileName; }).out; - garage_model = (rustPackages."unknown".garage_model."0.9.3" { inherit profileName; }).out; - garage_net = (rustPackages."unknown".garage_net."0.9.3" { inherit profileName; }).out; - garage_rpc = (rustPackages."unknown".garage_rpc."0.9.3" { inherit profileName; }).out; - garage_table = (rustPackages."unknown".garage_table."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; + garage_block = (rustPackages."unknown".garage_block."0.9.4" { inherit profileName; }).out; + garage_model = (rustPackages."unknown".garage_model."0.9.4" { inherit profileName; }).out; + garage_net = (rustPackages."unknown".garage_net."0.9.4" { inherit profileName; }).out; + garage_rpc = (rustPackages."unknown".garage_rpc."0.9.4" { inherit profileName; }).out; + garage_table = (rustPackages."unknown".garage_table."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; hmac = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hmac."0.12.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."1.0.0" { inherit profileName; }).out; @@ -2007,9 +2007,9 @@ in }; }); - "unknown".garage_block."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_block."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_block"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/block"); features = builtins.concatLists [ @@ -2023,11 +2023,11 @@ in bytesize = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytesize."1.3.0" { inherit profileName; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.30" { inherit profileName; }).out; - garage_db = (rustPackages."unknown".garage_db."0.9.3" { inherit profileName; }).out; - garage_net = (rustPackages."unknown".garage_net."0.9.3" { inherit profileName; }).out; - garage_rpc = (rustPackages."unknown".garage_rpc."0.9.3" { inherit profileName; }).out; - garage_table = (rustPackages."unknown".garage_table."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; + garage_db = (rustPackages."unknown".garage_db."0.9.4" { inherit profileName; }).out; + garage_net = (rustPackages."unknown".garage_net."0.9.4" { inherit profileName; }).out; + garage_rpc = (rustPackages."unknown".garage_rpc."0.9.4" { inherit profileName; }).out; + garage_table = (rustPackages."unknown".garage_table."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; rand = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".rand."0.8.5" { inherit profileName; }).out; @@ -2040,9 +2040,9 @@ in }; }); - "unknown".garage_db."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_db."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_db"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/db"); features = builtins.concatLists [ @@ -2071,9 +2071,9 @@ in }; }); - "unknown".garage_model."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_model."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_model"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/model"); features = builtins.concatLists [ @@ -2092,12 +2092,12 @@ in err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.30" { inherit profileName; }).out; - garage_block = (rustPackages."unknown".garage_block."0.9.3" { inherit profileName; }).out; - garage_db = (rustPackages."unknown".garage_db."0.9.3" { inherit profileName; }).out; - garage_net = (rustPackages."unknown".garage_net."0.9.3" { inherit profileName; }).out; - garage_rpc = (rustPackages."unknown".garage_rpc."0.9.3" { inherit profileName; }).out; - garage_table = (rustPackages."unknown".garage_table."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; + garage_block = (rustPackages."unknown".garage_block."0.9.4" { inherit profileName; }).out; + garage_db = (rustPackages."unknown".garage_db."0.9.4" { inherit profileName; }).out; + garage_net = (rustPackages."unknown".garage_net."0.9.4" { inherit profileName; }).out; + garage_rpc = (rustPackages."unknown".garage_rpc."0.9.4" { inherit profileName; }).out; + garage_table = (rustPackages."unknown".garage_table."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; parse_duration = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".parse_duration."2.1.1" { inherit profileName; }).out; @@ -2110,9 +2110,9 @@ in }; }); - "unknown".garage_net."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_net."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_net"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/net"); features = builtins.concatLists [ @@ -2147,9 +2147,9 @@ in }; }); - "unknown".garage_rpc."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_rpc."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_rpc"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/rpc"); features = builtins.concatLists [ @@ -2171,9 +2171,9 @@ in format_table = (rustPackages."unknown".format_table."0.1.1" { inherit profileName; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.30" { inherit profileName; }).out; - garage_db = (rustPackages."unknown".garage_db."0.9.3" { inherit profileName; }).out; - garage_net = (rustPackages."unknown".garage_net."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; + garage_db = (rustPackages."unknown".garage_db."0.9.4" { inherit profileName; }).out; + garage_net = (rustPackages."unknown".garage_net."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; gethostname = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".gethostname."0.4.3" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; itertools = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".itertools."0.12.1" { inherit profileName; }).out; @@ -2195,9 +2195,9 @@ in }; }); - "unknown".garage_table."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_table."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_table"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/table"); dependencies = { @@ -2206,9 +2206,9 @@ in bytes = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".bytes."1.5.0" { inherit profileName; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; futures_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures-util."0.3.30" { inherit profileName; }).out; - garage_db = (rustPackages."unknown".garage_db."0.9.3" { inherit profileName; }).out; - garage_rpc = (rustPackages."unknown".garage_rpc."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; + garage_db = (rustPackages."unknown".garage_db."0.9.4" { inherit profileName; }).out; + garage_rpc = (rustPackages."unknown".garage_rpc."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; hexdump = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hexdump."0.1.1" { inherit profileName; }).out; opentelemetry = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".opentelemetry."0.17.0" { inherit profileName; }).out; @@ -2220,9 +2220,9 @@ in }; }); - "unknown".garage_util."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_util."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_util"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/util"); features = builtins.concatLists [ @@ -2238,8 +2238,8 @@ in digest = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".digest."0.10.7" { inherit profileName; }).out; err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; - garage_db = (rustPackages."unknown".garage_db."0.9.3" { inherit profileName; }).out; - garage_net = (rustPackages."unknown".garage_net."0.9.3" { inherit profileName; }).out; + garage_db = (rustPackages."unknown".garage_db."0.9.4" { inherit profileName; }).out; + garage_net = (rustPackages."unknown".garage_net."0.9.4" { inherit profileName; }).out; hex = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hex."0.4.3" { inherit profileName; }).out; hexdump = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hexdump."0.1.1" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."1.0.0" { inherit profileName; }).out; @@ -2264,18 +2264,18 @@ in }; }); - "unknown".garage_web."0.9.3" = overridableMkRustCrate (profileName: rec { + "unknown".garage_web."0.9.4" = overridableMkRustCrate (profileName: rec { name = "garage_web"; - version = "0.9.3"; + version = "0.9.4"; registry = "unknown"; src = fetchCrateLocal (workspaceSrc + "/src/web"); dependencies = { err_derive = (buildRustPackages."registry+https://github.com/rust-lang/crates.io-index".err-derive."0.3.1" { profileName = "__noProfile"; }).out; futures = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".futures."0.3.30" { inherit profileName; }).out; - garage_api = (rustPackages."unknown".garage_api."0.9.3" { inherit profileName; }).out; - garage_model = (rustPackages."unknown".garage_model."0.9.3" { inherit profileName; }).out; - garage_table = (rustPackages."unknown".garage_table."0.9.3" { inherit profileName; }).out; - garage_util = (rustPackages."unknown".garage_util."0.9.3" { inherit profileName; }).out; + garage_api = (rustPackages."unknown".garage_api."0.9.4" { inherit profileName; }).out; + garage_model = (rustPackages."unknown".garage_model."0.9.4" { inherit profileName; }).out; + garage_table = (rustPackages."unknown".garage_table."0.9.4" { inherit profileName; }).out; + garage_util = (rustPackages."unknown".garage_util."0.9.4" { inherit profileName; }).out; http = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http."1.0.0" { inherit profileName; }).out; http_body_util = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".http-body-util."0.1.0" { inherit profileName; }).out; hyper = (rustPackages."registry+https://github.com/rust-lang/crates.io-index".hyper."1.1.0" { inherit profileName; }).out; diff --git a/Cargo.toml b/Cargo.toml index d3bbb301..ab15b486 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,15 +21,15 @@ default-members = ["src/garage"] # Internal Garage crates format_table = { version = "0.1.1", path = "src/format-table" } -garage_api = { version = "0.9.3", path = "src/api" } -garage_block = { version = "0.9.3", path = "src/block" } -garage_db = { version = "0.9.3", path = "src/db", default-features = false } -garage_model = { version = "0.9.3", path = "src/model", default-features = false } -garage_net = { version = "0.9.3", path = "src/net" } -garage_rpc = { version = "0.9.3", path = "src/rpc" } -garage_table = { version = "0.9.3", path = "src/table" } -garage_util = { version = "0.9.3", path = "src/util" } -garage_web = { version = "0.9.3", path = "src/web" } +garage_api = { version = "0.9.4", path = "src/api" } +garage_block = { version = "0.9.4", path = "src/block" } +garage_db = { version = "0.9.4", path = "src/db", default-features = false } +garage_model = { version = "0.9.4", path = "src/model", default-features = false } +garage_net = { version = "0.9.4", path = "src/net" } +garage_rpc = { version = "0.9.4", path = "src/rpc" } +garage_table = { version = "0.9.4", path = "src/table" } +garage_util = { version = "0.9.4", path = "src/util" } +garage_web = { version = "0.9.4", path = "src/web" } k2v-client = { version = "0.0.4", path = "src/k2v-client" } # External crates from crates.io diff --git a/doc/book/cookbook/real-world.md b/doc/book/cookbook/real-world.md index 9e226030..894f3db4 100644 --- a/doc/book/cookbook/real-world.md +++ b/doc/book/cookbook/real-world.md @@ -95,14 +95,14 @@ to store 2 TB of data in total. ## Get a Docker image Our docker image is currently named `dxflrs/garage` and is stored on the [Docker Hub](https://hub.docker.com/r/dxflrs/garage/tags?page=1&ordering=last_updated). -We encourage you to use a fixed tag (eg. `v0.9.3`) and not the `latest` tag. -For this example, we will use the latest published version at the time of the writing which is `v0.9.3` but it's up to you +We encourage you to use a fixed tag (eg. `v0.9.4`) and not the `latest` tag. +For this example, we will use the latest published version at the time of the writing which is `v0.9.4` but it's up to you to check [the most recent versions on the Docker Hub](https://hub.docker.com/r/dxflrs/garage/tags?page=1&ordering=last_updated). For example: ``` -sudo docker pull dxflrs/garage:v0.9.3 +sudo docker pull dxflrs/garage:v0.9.4 ``` ## Deploying and configuring Garage @@ -168,7 +168,7 @@ docker run \ -v /etc/garage.toml:/etc/garage.toml \ -v /var/lib/garage/meta:/var/lib/garage/meta \ -v /var/lib/garage/data:/var/lib/garage/data \ - dxflrs/garage:v0.9.3 + dxflrs/garage:v0.9.4 ``` With this command line, Garage should be started automatically at each boot. @@ -182,7 +182,7 @@ If you want to use `docker-compose`, you may use the following `docker-compose.y version: "3" services: garage: - image: dxflrs/garage:v0.9.3 + image: dxflrs/garage:v0.9.4 network_mode: "host" restart: unless-stopped volumes: diff --git a/script/helm/garage/Chart.yaml b/script/helm/garage/Chart.yaml index 71906cfb..0e157235 100644 --- a/script/helm/garage/Chart.yaml +++ b/script/helm/garage/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.4.1 +version: 0.4.2 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "v0.9.3" +appVersion: "v0.9.4" diff --git a/src/api/Cargo.toml b/src/api/Cargo.toml index 317031a7..97bbe983 100644 --- a/src/api/Cargo.toml +++ b/src/api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_api" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/block/Cargo.toml b/src/block/Cargo.toml index 0f6fb5bb..e4f62e02 100644 --- a/src/block/Cargo.toml +++ b/src/block/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_block" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/db/Cargo.toml b/src/db/Cargo.toml index baa94bae..7da4d343 100644 --- a/src/db/Cargo.toml +++ b/src/db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_db" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/garage/Cargo.toml b/src/garage/Cargo.toml index 52861853..c2ce0e7d 100644 --- a/src/garage/Cargo.toml +++ b/src/garage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/model/Cargo.toml b/src/model/Cargo.toml index bde354b5..f3f850b2 100644 --- a/src/model/Cargo.toml +++ b/src/model/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_model" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/net/Cargo.toml b/src/net/Cargo.toml index 5168c939..a35071da 100644 --- a/src/net/Cargo.toml +++ b/src/net/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_net" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/rpc/Cargo.toml b/src/rpc/Cargo.toml index 823fab99..e1cd8000 100644 --- a/src/rpc/Cargo.toml +++ b/src/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_rpc" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/table/Cargo.toml b/src/table/Cargo.toml index 61b8a82e..1e0ae9e7 100644 --- a/src/table/Cargo.toml +++ b/src/table/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_table" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/util/Cargo.toml b/src/util/Cargo.toml index 72581c16..143c5c93 100644 --- a/src/util/Cargo.toml +++ b/src/util/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_util" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat "] edition = "2018" license = "AGPL-3.0" diff --git a/src/web/Cargo.toml b/src/web/Cargo.toml index 7bbaca56..adda2b86 100644 --- a/src/web/Cargo.toml +++ b/src/web/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "garage_web" -version = "0.9.3" +version = "0.9.4" authors = ["Alex Auvolat ", "Quentin Dufour "] edition = "2018" license = "AGPL-3.0"