mirror of
https://github.com/deuxfleurs-org/garage.git
synced 2026-08-07 13:23:33 +00:00
More security: don't delete stuff too easily
This commit is contained in:
@@ -41,7 +41,12 @@ impl TableReplication for TableFullReplication {
|
||||
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
|
||||
let nmembers = system.ring.borrow().config.members.len();
|
||||
if nmembers > self.max_faults {
|
||||
nmembers - self.max_faults
|
||||
} else {
|
||||
1
|
||||
}
|
||||
}
|
||||
fn max_write_errors(&self) -> usize {
|
||||
self.max_faults
|
||||
|
||||
@@ -277,6 +277,9 @@ where
|
||||
warn!("Interrupting offload as partitions seem to have changed");
|
||||
break;
|
||||
}
|
||||
if nodes.len() < self.aux.replication.write_quorum(&self.aux.system) {
|
||||
return Err(Error::Message(format!("Not offloading as we don't have a quorum of nodes to write to.")));
|
||||
}
|
||||
|
||||
counter += 1;
|
||||
debug!(
|
||||
|
||||
Reference in New Issue
Block a user