From c94406f4282d48e2e2ac82ffb57eafaad23f7edc Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Tue, 9 Nov 2021 12:24:04 +0100 Subject: 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. --- src/table/crdt/bool.rs | 34 ---------------------------------- 1 file changed, 34 deletions(-) delete mode 100644 src/table/crdt/bool.rs (limited to 'src/table/crdt/bool.rs') diff --git a/src/table/crdt/bool.rs b/src/table/crdt/bool.rs deleted file mode 100644 index 53af8f82..00000000 --- a/src/table/crdt/bool.rs +++ /dev/null @@ -1,34 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use crate::crdt::crdt::*; - -/// Boolean, where `true` is an absorbing state -#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq)] -pub struct Bool(bool); - -impl Bool { - /// Create a new boolean with the specified value - pub fn new(b: bool) -> Self { - Self(b) - } - /// Set the boolean to true - pub fn set(&mut self) { - self.0 = true; - } - /// Get the boolean value - pub fn get(&self) -> bool { - self.0 - } -} - -impl From for Bool { - fn from(b: bool) -> Bool { - Bool::new(b) - } -} - -impl Crdt for Bool { - fn merge(&mut self, other: &Self) { - self.0 = self.0 || other.0; - } -} -- cgit v1.2.3