Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
Fix counter increment and test
Browse files Browse the repository at this point in the history
  • Loading branch information
davxy committed Apr 18, 2023
1 parent ec83a57 commit 083f76c
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 12 deletions.
18 changes: 10 additions & 8 deletions client/consensus/common/src/level_monitor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,16 +109,18 @@ where
self.import_counter = info.finalized_number;

for leaf in self.backend.blockchain().leaves().unwrap_or_default() {
let mut info = self.backend.blockchain().header_metadata(leaf).expect(ERR_MSG);
let mut meta = self.backend.blockchain().header_metadata(leaf).expect(ERR_MSG);

self.import_counter = self.import_counter.max(info.number);
self.import_counter = self.import_counter.max(meta.number);

// Populate the monitor until we don't hit an already imported branch
// or the block number is below the last finalized block number.
while info.number >= self.lowest_level && !self.freshness.contains_key(&info.hash) {
self.freshness.insert(info.hash, info.number);
self.levels.entry(info.number).or_default().insert(info.hash);
info = self.backend.blockchain().header_metadata(info.parent).expect(ERR_MSG);
while !self.freshness.contains_key(&meta.hash) {
self.freshness.insert(meta.hash, meta.number);
self.levels.entry(meta.number).or_default().insert(meta.hash);
if meta.number <= self.lowest_level {
break
}
meta = self.backend.blockchain().header_metadata(meta.parent).expect(ERR_MSG);
}
}

Expand Down Expand Up @@ -349,9 +351,9 @@ where

/// Add a new imported block information to the monitor.
pub fn block_imported(&mut self, number: NumberFor<Block>, hash: Block::Hash) {
self.import_counter += One::one();
self.freshness.insert(hash, self.import_counter);
self.levels.entry(number).or_default().insert(hash);
self.import_counter += One::one();

// Do cleanup once in a while, we are allowed to have some obsolete information.
let finalized_num = self.backend.blockchain().info().finalized_number;
Expand Down
13 changes: 9 additions & 4 deletions client/consensus/common/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -765,6 +765,12 @@ fn restore_limit_monitor() {
LevelLimit::Some(LEVEL_LIMIT),
);

let monitor_sd = para_import.monitor.clone().unwrap();

let monitor = monitor_sd.shared_data();
assert_eq!(monitor.import_counter, 3);
std::mem::drop(monitor);

let block13 = build_and_import_block_ext(
&*client,
BlockOrigin::Own,
Expand All @@ -783,14 +789,13 @@ fn restore_limit_monitor() {
let expected = vec![blocks1[1].header.hash(), block13.header.hash()];
assert_eq!(leaves, expected);

let monitor = para_import.monitor.unwrap();
let monitor = monitor.shared_data();
assert_eq!(monitor.import_counter, 5);
let monitor = monitor_sd.shared_data();
assert_eq!(monitor.import_counter, 4);
assert!(monitor.levels.iter().all(|(number, hashes)| {
hashes
.iter()
.filter(|hash| **hash != block13.header.hash())
.all(|hash| *number == *monitor.freshness.get(hash).unwrap())
}));
assert_eq!(*monitor.freshness.get(&block13.header.hash()).unwrap(), monitor.import_counter - 1);
assert_eq!(*monitor.freshness.get(&block13.header.hash()).unwrap(), monitor.import_counter);
}

0 comments on commit 083f76c

Please sign in to comment.