for each node, never count both Aux and Term messages

This commit is contained in:
Vladimir Komendantskiy 2018-06-07 20:29:51 +01:00
parent 35d5ad106a
commit dc4475ba82
1 changed files with 13 additions and 10 deletions

View File

@ -352,18 +352,21 @@ impl<NodeUid: Clone + Debug + Eq + Hash + Ord> Agreement<NodeUid> {
/// f agreeing messages would not always terminate. We can, however, expect every good node to
/// send an `Aux` value that will eventually end up in our `bin_values`.
fn count_aux(&self) -> usize {
let count_aux = self
let mut aux: BTreeMap<_, _> = self
.received_aux
.values()
.filter(|&&b| self.bin_values.contains(b))
.count();
let count_term = self
.received_term
.values()
.filter(|&&b| self.bin_values.contains(b))
.count();
.iter()
.filter(|(_, &b)| self.bin_values.contains(b))
.collect();
count_aux + count_term
let term: BTreeMap<_, _> = self
.received_term
.iter()
.filter(|(_, &b)| self.bin_values.contains(b))
.collect();
// Ensure that nodes are not counted twice.
aux.extend(term);
aux.len()
}
/// Counts the number of received `Conf` messages.