Simpler Merkle & sync

This commit is contained in:
Alex Auvolat
2021-03-16 12:18:03 +01:00
parent 0aad2f2e06
commit 2a41b82384
6 changed files with 85 additions and 146 deletions
+4 -6
View File
@@ -1,4 +1,4 @@
use garage_rpc::ring::Ring;
use garage_rpc::ring::*;
use garage_util::data::*;
@@ -6,9 +6,6 @@ pub trait TableReplication: Send + Sync {
// See examples in table_sharded.rs and table_fullcopy.rs
// To understand various replication methods
// Partition number of data item (for Merkle tree)
fn partition_of(&self, hash: &Hash) -> u16;
// Which nodes to send reads from
fn read_nodes(&self, hash: &Hash) -> Vec<UUID>;
fn read_quorum(&self) -> usize;
@@ -18,6 +15,7 @@ pub trait TableReplication: Send + Sync {
fn write_quorum(&self) -> usize;
fn max_write_errors(&self) -> usize;
// Get partition boundaries
fn split_points(&self, ring: &Ring) -> Vec<Hash>;
// Accessing partitions, for Merkle tree & sync
fn partition_of(&self, hash: &Hash) -> Partition;
fn partitions(&self) -> Vec<(Partition, Hash)>;
}