You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Blocks where votes and origin descendants should be ignored for processing.
@@ -608,15 +610,17 @@ impl CommitFinalizer {
608
610
continue;
609
611
}
610
612
let curr_block_state = blocks_map.get(&curr_block_ref).unwrap_or_else(|| panic!("Block {curr_block_ref} is either incorrectly gc'ed or failed to be recovered after crash.")).read();
611
-
// The first ancestor of current block should have the same origin / author as the current block.
612
-
// If it is not found in the blocks map but have round higher than the pending block, it might have
613
-
// voted on the pending block but have been GC'ed.
613
+
// Do not count votes, when there can be GC'ed blocks in the path from the pending block to the current block.
614
614
// Because the GC'ed block might have voted on the pending block and rejected some of the pending transactions,
615
615
// we cannot assume current block is voting to accept transactions from the pending block.
616
-
let curr_origin_ancestor_ref = curr_block_state.block.ancestors().first().unwrap();
617
-
let skip_votes = curr_block_ref.author == curr_origin_ancestor_ref.author
0 commit comments