diff options
author | Mendes <mendes.oulamara@pm.me> | 2022-09-21 14:39:59 +0200 |
---|---|---|
committer | Mendes <mendes.oulamara@pm.me> | 2022-09-21 14:39:59 +0200 |
commit | 7f3249a23770fd4da981c2ecb1126da97e9b4ca5 (patch) | |
tree | 93d3dec24948a8dcd5cf42b2889f67c414a9bf42 /src/rpc/system.rs | |
parent | c4adbeed515c571369453d23c7f1d84b1db994ec (diff) | |
download | garage-7f3249a23770fd4da981c2ecb1126da97e9b4ca5.tar.gz garage-7f3249a23770fd4da981c2ecb1126da97e9b4ca5.zip |
New version of the algorithm that calculate the layout.
It takes as paramters the replication factor and the zone redundancy, computes the
largest partition size reachable with these constraints, and among the possible
assignation with this partition size, it computes the one that moves the least number
of partitions compared to the previous assignation.
This computation uses graph algorithms defined in graph_algo.rs
Diffstat (limited to 'src/rpc/system.rs')
-rw-r--r-- | src/rpc/system.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rpc/system.rs b/src/rpc/system.rs index 68d94ea5..313671ca 100644 --- a/src/rpc/system.rs +++ b/src/rpc/system.rs @@ -97,6 +97,7 @@ pub struct System { kubernetes_discovery: Option<KubernetesDiscoveryParam>, replication_factor: usize, + zone_redundancy: usize, /// The ring pub ring: watch::Receiver<Arc<Ring>>, @@ -192,6 +193,7 @@ impl System { network_key: NetworkKey, background: Arc<BackgroundRunner>, replication_factor: usize, + zone_redundancy: usize, config: &Config, ) -> Arc<Self> { let node_key = @@ -211,7 +213,7 @@ impl System { "No valid previous cluster layout stored ({}), starting fresh.", e ); - ClusterLayout::new(replication_factor) + ClusterLayout::new(replication_factor, zone_redundancy) } }; @@ -285,6 +287,7 @@ impl System { rpc: RpcHelper::new(netapp.id.into(), fullmesh, background.clone(), ring.clone()), system_endpoint, replication_factor, + zone_redundancy, rpc_listen_addr: config.rpc_bind_addr, rpc_public_addr, bootstrap_peers: config.bootstrap_peers.clone(), |