diff --git a/Cargo.lock b/Cargo.lock index 03e029e5e9..d5c0f5c708 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -209,7 +209,7 @@ dependencies = [ [[package]] name = "codechain" -version = "2.2.0" +version = "2.2.1" dependencies = [ "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cidr 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index d58ec13776..aad3f3e977 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "codechain" -version = "2.2.0" +version = "2.2.1" license = "AGPL-3.0" authors = ["CodeChain Team "] exclude = [ diff --git a/core/src/consensus/tendermint/worker.rs b/core/src/consensus/tendermint/worker.rs index 19b12e96c0..5f3aa0ead7 100644 --- a/core/src/consensus/tendermint/worker.rs +++ b/core/src/consensus/tendermint/worker.rs @@ -612,8 +612,11 @@ impl Worker { } /// Do we need this function? - fn set_finalized_view_in_current_height(&mut self, view: View) { - assert_eq!(self.finalized_view_of_current_block, None); + fn set_finalized_view_in_current_height(&mut self, view: View, is_restoring: bool) { + if !is_restoring { + assert_eq!(self.finalized_view_of_current_block, None); + } + self.finalized_view_of_current_block = Some(view); } @@ -774,7 +777,7 @@ impl Worker { Step::Commit => { cinfo!(ENGINE, "move_to_step: Commit."); let (view, block_hash) = state.committed().expect("commit always has committed_view"); - self.set_finalized_view_in_current_height(view); + self.set_finalized_view_in_current_height(view, is_restoring); let proposal_received = self.is_proposal_received(self.height, view, block_hash); let proposal_imported = self.client().block(&block_hash.into()).is_some(); @@ -1033,11 +1036,6 @@ impl Worker { let client = self.client(); let backup = restore(client.get_kvdb().as_ref()); if let Some(backup) = backup { - if backup.step == Step::Commit { - self.finalized_view_of_current_block = None; - } else { - self.finalized_view_of_current_block = backup.finalized_view_of_current_block; - } let backup_step = match backup.step { Step::Propose => TendermintState::Propose, Step::Prevote => TendermintState::Prevote, @@ -1051,6 +1049,7 @@ impl Worker { self.height = backup.height; self.view = backup.view; self.finalized_view_of_previous_block = backup.finalized_view_of_previous_block; + self.finalized_view_of_current_block = backup.finalized_view_of_current_block; if let Some(proposal) = backup.proposal { if client.block(&BlockId::Hash(proposal)).is_some() {