diff options
author | Alex Auvolat <alex@adnab.me> | 2021-03-11 16:54:15 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2021-03-11 16:54:15 +0100 |
commit | 94f3d287742ff90f179f528421c690b00b71a912 (patch) | |
tree | 9269d537da06d609cdc42cba8d9ab3c67d0650b9 /src/table/table_fullcopy.rs | |
parent | 8d63738cb062e816fc01c6aa2b32936ad31ff65b (diff) | |
download | garage-94f3d287742ff90f179f528421c690b00b71a912.tar.gz garage-94f3d287742ff90f179f528421c690b00b71a912.zip |
WIP big refactoring
Diffstat (limited to 'src/table/table_fullcopy.rs')
-rw-r--r-- | src/table/table_fullcopy.rs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/src/table/table_fullcopy.rs b/src/table/table_fullcopy.rs deleted file mode 100644 index c55879d8..00000000 --- a/src/table/table_fullcopy.rs +++ /dev/null @@ -1,59 +0,0 @@ -use std::sync::Arc; - -use garage_rpc::membership::System; -use garage_rpc::ring::Ring; -use garage_util::data::*; - -use crate::*; - -#[derive(Clone)] -pub struct TableFullReplication { - pub max_faults: usize, -} - -#[derive(Clone)] -struct Neighbors { - ring: Arc<Ring>, - neighbors: Vec<UUID>, -} - -impl TableFullReplication { - pub fn new(max_faults: usize) -> Self { - TableFullReplication { max_faults } - } -} - -impl TableReplication for TableFullReplication { - // Full replication schema: all nodes store everything - // Writes are disseminated in an epidemic manner in the network - - // Advantage: do all reads locally, extremely fast - // Inconvenient: only suitable to reasonably small tables - - fn read_nodes(&self, _hash: &Hash, system: &System) -> Vec<UUID> { - vec![system.id] - } - fn read_quorum(&self) -> usize { - 1 - } - - fn write_nodes(&self, hash: &Hash, system: &System) -> Vec<UUID> { - self.replication_nodes(hash, system.ring.borrow().as_ref()) - } - fn write_quorum(&self, system: &System) -> usize { - system.ring.borrow().config.members.len() - self.max_faults - } - fn max_write_errors(&self) -> usize { - self.max_faults - } - - fn replication_nodes(&self, _hash: &Hash, ring: &Ring) -> Vec<UUID> { - ring.config.members.keys().cloned().collect::<Vec<_>>() - } - fn split_points(&self, _ring: &Ring) -> Vec<Hash> { - let mut ret = vec![]; - ret.push([0u8; 32].into()); - ret.push([0xFFu8; 32].into()); - ret - } -} |