Skip to content

Commit 8235535

Browse files
committed
Add register_is_done to ConsensusEngine
This is a work-around to the currently order-dependant and non-deterministic initialization of Tendermint ConsensusEngine/Worker.
1 parent c83f662 commit 8235535

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

codechain/run_node.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@ pub fn run_node(matches: &ArgMatches) -> Result<(), String> {
376376

377377
// drop the scheme to free up genesis state.
378378
drop(scheme);
379+
client.client().engine().register_is_done();
379380

380381
cinfo!(TEST_SCRIPT, "Initialization complete");
381382

core/src/consensus/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,8 @@ pub trait ConsensusEngine: Sync + Send {
268268

269269
fn register_snapshot_notify_sender(&self, _sender: SnapshotNotifySender) {}
270270

271+
fn register_is_done(&self) {}
272+
271273
fn send_snapshot_notify(&self, _block_hash: BlockHash) {}
272274

273275
fn get_best_block_from_best_proposal_header(&self, header: &HeaderView) -> BlockHash {

core/src/consensus/tendermint/engine.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,6 @@ impl ConsensusEngine for Tendermint {
341341
let extension = service.register_extension(move |api| TendermintExtension::new(inner, timeouts, api));
342342
let client = Arc::downgrade(&self.client().unwrap());
343343
self.extension_initializer.send((extension, client)).unwrap();
344-
345-
let (result, receiver) = crossbeam::bounded(1);
346-
self.inner.send(worker::Event::Restore(result)).unwrap();
347-
receiver.recv().unwrap();
348344
}
349345

350346
fn register_time_gap_config_to_worker(&self, time_gap_params: TimeGapParams) {
@@ -363,6 +359,12 @@ impl ConsensusEngine for Tendermint {
363359
client.add_notify(Arc::downgrade(&self.chain_notify) as Weak<dyn ChainNotify>);
364360
}
365361

362+
fn register_is_done(&self) {
363+
let (result, receiver) = crossbeam::bounded(1);
364+
self.inner.send(worker::Event::Restore(result)).unwrap();
365+
receiver.recv().unwrap();
366+
}
367+
366368
fn get_best_block_from_best_proposal_header(&self, header: &HeaderView) -> BlockHash {
367369
header.parent_hash()
368370
}

0 commit comments

Comments
 (0)