From a48e2e0cb2bdc75e14dfde199dbca0a779b1316b Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 10 Jan 2023 10:30:59 +0100 Subject: K2V: Subscription to ranges of items --- src/model/k2v/item_table.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index ce3e4129..a22df68a 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -11,7 +11,7 @@ use garage_table::*; use crate::index_counter::*; use crate::k2v::causality::*; -use crate::k2v::poll::*; +use crate::k2v::sub::*; pub const ENTRIES: &str = "entries"; pub const CONFLICTS: &str = "conflicts"; -- cgit v1.2.3 From 9f5419f465de3ddbb9afc91464d0eb00636049b9 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 10 Jan 2023 11:01:49 +0100 Subject: Make K2V item timestamps globally increasing on each node --- src/model/k2v/item_table.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index a22df68a..1ba9bb46 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -73,7 +73,8 @@ impl K2VItem { this_node: Uuid, context: &Option, new_value: DvvsValue, - ) { + node_ts: u64, + ) -> u64 { if let Some(context) = context { for (node, t_discard) in context.vector_clock.iter() { if let Some(e) = self.items.get_mut(node) { @@ -98,7 +99,9 @@ impl K2VItem { values: vec![], }); let t_prev = e.max_time(); - e.values.push((t_prev + 1, new_value)); + let t_new = std::cmp::max(t_prev + 1, node_ts + 1); + e.values.push((t_new, new_value)); + t_new } /// Extract the causality context of a K2V Item -- cgit v1.2.3 From 789540ca379efd710f1e2699fd458b4821f36a5b Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 10 Jan 2023 11:59:57 +0100 Subject: Type definition for range seen marker --- src/model/k2v/item_table.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index 1ba9bb46..bc2b1aef 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -106,7 +106,7 @@ impl K2VItem { /// Extract the causality context of a K2V Item pub fn causal_context(&self) -> CausalContext { - let mut cc = CausalContext::new_empty(); + let mut cc = CausalContext::new(); for (node, ent) in self.items.iter() { cc.vector_clock.insert(*node, ent.max_time()); } -- cgit v1.2.3 From f952e37ba772b9286ba814ddb29f17d0ec7731c6 Mon Sep 17 00:00:00 2001 From: Jonathan Davies Date: Mon, 23 Jan 2023 22:19:37 +0000 Subject: {model,util}/Cargo.toml: Updated blake2 from 0.9 to 0.10. --- src/model/k2v/item_table.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index ce3e4129..9955a9cd 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -173,9 +173,9 @@ impl Crdt for DvvsEntry { impl PartitionKey for K2VItemPartition { fn hash(&self) -> Hash { - use blake2::{Blake2b, Digest}; + use blake2::{Blake2b512, Digest}; - let mut hasher = Blake2b::new(); + let mut hasher = Blake2b512::new(); hasher.update(self.bucket_id.as_slice()); hasher.update(self.partition_key.as_bytes()); let mut hash = [0u8; 32]; -- cgit v1.2.3 From 8e93d6997415d60ba5c371da8b27065a57254a8c Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Thu, 26 Jan 2023 17:26:32 +0100 Subject: More clippy fixes --- src/model/k2v/item_table.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index 28646f37..e0fc9b5b 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -269,6 +269,7 @@ impl CountedItem for K2VItem { &self.partition.partition_key } + #[allow(clippy::bool_to_int_with_if)] fn counts(&self) -> Vec<(&'static str, i64)> { let values = self.values(); @@ -313,7 +314,7 @@ mod tests { values: vec![(6, DvvsValue::Value(vec![16])), (7, DvvsValue::Deleted)], }; - let mut e3 = e1.clone(); + let mut e3 = e1; e3.merge(&e2); assert_eq!(e2, e3); } -- cgit v1.2.3 From c56794655e70544deb4a9f9b0f8e94080764d45e Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Thu, 26 Jan 2023 17:27:03 +0100 Subject: Fix fmt --- src/model/k2v/item_table.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index e0fc9b5b..84c05db5 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -269,7 +269,7 @@ impl CountedItem for K2VItem { &self.partition.partition_key } - #[allow(clippy::bool_to_int_with_if)] + #[allow(clippy::bool_to_int_with_if)] fn counts(&self) -> Vec<(&'static str, i64)> { let values = self.values(); -- cgit v1.2.3 From 000006d689d2d8075599fbe1653605566ae9d36e Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Mon, 13 Mar 2023 18:50:07 +0100 Subject: obsolete clippy lints --- src/model/k2v/item_table.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'src/model/k2v/item_table.rs') diff --git a/src/model/k2v/item_table.rs b/src/model/k2v/item_table.rs index 84c05db5..9e3ba5a5 100644 --- a/src/model/k2v/item_table.rs +++ b/src/model/k2v/item_table.rs @@ -269,7 +269,6 @@ impl CountedItem for K2VItem { &self.partition.partition_key } - #[allow(clippy::bool_to_int_with_if)] fn counts(&self) -> Vec<(&'static str, i64)> { let values = self.values(); -- cgit v1.2.3