Skip to content

Commit 1dff7e2

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

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
@@ -367,6 +367,7 @@ pub fn run_node(matches: &ArgMatches) -> Result<(), String> {
367367

368368
// drop the scheme to free up genesis state.
369369
drop(scheme);
370+
client.client().engine().complete_register();
370371

371372
cinfo!(TEST_SCRIPT, "Initialization complete");
372373

core/src/consensus/mod.rs

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

266266
fn register_chain_notify(&self, _: &Client) {}
267267

268+
fn complete_register(&self) {}
269+
268270
fn get_best_block_from_best_proposal_header(&self, header: &HeaderView) -> BlockHash {
269271
header.hash()
270272
}

core/src/consensus/tendermint/engine.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,6 @@ impl ConsensusEngine for Tendermint {
281281
let extension = service.register_extension(move |api| TendermintExtension::new(inner, timeouts, api));
282282
let client = Arc::downgrade(&self.client().unwrap());
283283
self.extension_initializer.send((extension, client)).unwrap();
284-
285-
let (result, receiver) = crossbeam::bounded(1);
286-
self.inner.send(worker::Event::Restore(result)).unwrap();
287-
receiver.recv().unwrap();
288284
}
289285

290286
fn register_time_gap_config_to_worker(&self, time_gap_params: TimeGapParams) {
@@ -303,6 +299,12 @@ impl ConsensusEngine for Tendermint {
303299
client.add_notify(Arc::downgrade(&self.chain_notify) as Weak<dyn ChainNotify>);
304300
}
305301

302+
fn complete_register(&self) {
303+
let (result, receiver) = crossbeam::bounded(1);
304+
self.inner.send(worker::Event::Restore(result)).unwrap();
305+
receiver.recv().unwrap();
306+
}
307+
306308
fn get_best_block_from_best_proposal_header(&self, header: &HeaderView) -> BlockHash {
307309
header.parent_hash()
308310
}

0 commit comments

Comments
 (0)