aboutsummaryrefslogtreecommitdiff
path: root/src/table/replication/mode.rs
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2022-03-28 16:20:15 +0200
committerAlex Auvolat <alex@adnab.me>2022-03-28 16:26:04 +0200
commit0091002ef2fe5761cc6c325490be2f01b2090600 (patch)
treec99498ac7050d2267513336d4013f270656d874b /src/table/replication/mode.rs
parent8f9cf3a5d10dafc28b717e89c8c5944c2de1b2f7 (diff)
downloadgarage-0091002ef2fe5761cc6c325490be2f01b2090600.tar.gz
garage-0091002ef2fe5761cc6c325490be2f01b2090600.zip
New replication modes and their documentationfeature/documentation
Diffstat (limited to 'src/table/replication/mode.rs')
-rw-r--r--src/table/replication/mode.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/table/replication/mode.rs b/src/table/replication/mode.rs
index 32687288..c6f84c45 100644
--- a/src/table/replication/mode.rs
+++ b/src/table/replication/mode.rs
@@ -1,7 +1,10 @@
pub enum ReplicationMode {
None,
TwoWay,
+ TwoWayDangerous,
ThreeWay,
+ ThreeWayDegraded,
+ ThreeWayDangerous,
}
impl ReplicationMode {
@@ -9,7 +12,10 @@ impl ReplicationMode {
match v {
"none" | "1" => Some(Self::None),
"2" => Some(Self::TwoWay),
+ "2-dangerous" => Some(Self::TwoWayDangerous),
"3" => Some(Self::ThreeWay),
+ "3-degraded" => Some(Self::ThreeWayDegraded),
+ "3-dangerous" => Some(Self::ThreeWayDangerous),
_ => None,
}
}
@@ -24,16 +30,17 @@ impl ReplicationMode {
pub fn replication_factor(&self) -> usize {
match self {
Self::None => 1,
- Self::TwoWay => 2,
- Self::ThreeWay => 3,
+ Self::TwoWay | Self::TwoWayDangerous => 2,
+ Self::ThreeWay | Self::ThreeWayDegraded | Self::ThreeWayDangerous => 3,
}
}
pub fn read_quorum(&self) -> usize {
match self {
Self::None => 1,
- Self::TwoWay => 1,
+ Self::TwoWay | Self::TwoWayDangerous => 1,
Self::ThreeWay => 2,
+ Self::ThreeWayDegraded | Self::ThreeWayDangerous => 1,
}
}
@@ -41,7 +48,9 @@ impl ReplicationMode {
match self {
Self::None => 1,
Self::TwoWay => 2,
- Self::ThreeWay => 2,
+ Self::TwoWayDangerous => 1,
+ Self::ThreeWay | Self::ThreeWayDegraded => 2,
+ Self::ThreeWayDangerous => 1,
}
}
}