Improve how node roles are assigned in Garage

- change the terminology: the network configuration becomes the role
  table, the configuration of a nodes becomes a node's role
- the modification of the role table takes place in two steps: first,
  changes are staged in a CRDT data structure. Then, once the user is
  happy with the changes, they can commit them all at once (or revert
  them).
- update documentation
- fix tests
- implement smarter partition assignation algorithm

This patch breaks the format of the network configuration: when
migrating, the cluster will be in a state where no roles are assigned.
All roles must be re-assigned and commited at once. This migration
should not pose an issue.
This commit is contained in:
Alex Auvolat
2021-11-09 12:24:04 +01:00
parent 53888995bd
commit c94406f428
42 changed files with 1430 additions and 557 deletions
Generated
+8 -7
View File
@@ -379,7 +379,7 @@ dependencies = [
[[package]]
name = "garage"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"async-trait",
"bytes 1.1.0",
@@ -408,7 +408,7 @@ dependencies = [
[[package]]
name = "garage_api"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"base64",
"bytes 1.1.0",
@@ -440,7 +440,7 @@ dependencies = [
[[package]]
name = "garage_model"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"arc-swap",
"async-trait",
@@ -462,7 +462,7 @@ dependencies = [
[[package]]
name = "garage_rpc"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"arc-swap",
"async-trait",
@@ -479,6 +479,7 @@ dependencies = [
"rand",
"rmp-serde 0.15.5",
"serde",
"serde_bytes",
"serde_json",
"tokio",
"tokio-stream",
@@ -486,7 +487,7 @@ dependencies = [
[[package]]
name = "garage_table"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"async-trait",
"bytes 1.1.0",
@@ -506,7 +507,7 @@ dependencies = [
[[package]]
name = "garage_util"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"blake2",
"chrono",
@@ -530,7 +531,7 @@ dependencies = [
[[package]]
name = "garage_web"
version = "0.4.0"
version = "0.5.0"
dependencies = [
"err-derive 0.3.0",
"futures",