Skip to content
Snippets Groups Projects
Commit cef250cb authored by André Silva's avatar André Silva Committed by GitHub
Browse files

grandpa: fix enacting forced changes with no delay (#6828)

* grandpa: fix enacting forced changes with no delay

* grandpa: fix formatting
parent e4280858
No related merge requests found
......@@ -356,8 +356,9 @@ where
.take_while(|c| c.effective_number() <= best_number) // to prevent iterating too far
.filter(|c| c.effective_number() == best_number)
{
// check if the given best block is in the same branch as the block that signaled the change.
if is_descendent_of(&change.canon_hash, &best_hash)? {
// check if the given best block is in the same branch as
// the block that signaled the change.
if change.canon_hash == best_hash || is_descendent_of(&change.canon_hash, &best_hash)? {
// apply this change: make the set canonical
afg_log!(initial_sync,
"👴 Applying authority set change forced at block #{:?}",
......@@ -984,6 +985,43 @@ mod tests {
);
}
#[test]
fn forced_changes_with_no_delay() {
// NOTE: this is a regression test
let mut authorities = AuthoritySet {
current_authorities: Vec::new(),
set_id: 0,
pending_standard_changes: ForkTree::new(),
pending_forced_changes: Vec::new(),
};
let set_a = vec![(AuthorityId::from_slice(&[1; 32]), 5)];
// we create a forced change with no delay
let change_a = PendingChange {
next_authorities: set_a.clone(),
delay: 0,
canon_height: 5,
canon_hash: "hash_a",
delay_kind: DelayKind::Best {
median_last_finalized: 0,
},
};
// and import it
authorities
.add_pending_change(change_a, &static_is_descendent_of(false))
.unwrap();
// it should be enacted at the same block that signaled it
assert!(
authorities
.apply_forced_changes("hash_a", 5, &static_is_descendent_of(false), false)
.unwrap()
.is_some()
);
}
#[test]
fn next_change_works() {
let current_authorities = vec![(AuthorityId::from_slice(&[1; 32]), 1)];
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment