Skip to content

Commit 018e02d

Browse files
committed
fix sync_block_process
1 parent aa0c54d commit 018e02d

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

sync/src/parallel/worker_scheduler.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::{sync::atomic::AtomicU64, time::Duration};
22

3+
use starcoin_logger::prelude::debug;
34
use tokio::sync::RwLock;
45

56
#[derive(Debug)]
@@ -29,17 +30,20 @@ impl WorkerScheduler {
2930
}
3031

3132
pub async fn tell_worker_to_stop(&self) {
33+
debug!("tell_worker_to_stop");
3234
let mut state = self.state.write().await;
3335
*state = WorkerSchedulerState::Inactive;
3436
}
3537

3638
pub async fn tell_worker_to_start(&self) {
39+
debug!("tell_worker_to_start");
3740
let mut state = self.state.write().await;
3841
*state = WorkerSchedulerState::Active;
3942
}
4043

4144
pub async fn check_if_stop(&self) -> bool {
4245
let state = self.state.read().await;
46+
debug!("check the state of the workers thread: {:?}", *state);
4347
match *state {
4448
WorkerSchedulerState::Inactive => true,
4549
WorkerSchedulerState::Active => false,
@@ -67,6 +71,7 @@ impl WorkerScheduler {
6771
} else {
6872
tokio::task::yield_now().await;
6973
tokio::time::sleep(Duration::from_millis(200)).await;
74+
debug!("wait for worker to exit");
7075
}
7176
}
7277
}

sync/src/tasks/tests_dag.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ async fn sync_block_process(
2020
local_node: Arc<SyncNodeMocker>,
2121
registry: &ServiceRef<RegistryService>,
2222
) -> Result<(Arc<SyncNodeMocker>, Arc<SyncNodeMocker>)> {
23+
let worker_scheduler = Arc::new(WorkerScheduler::new());
2324
loop {
25+
worker_scheduler.tell_worker_to_stop().await;
26+
worker_scheduler.wait_for_worker().await;
2427
let target = target_node.sync_target();
2528

2629
let storage = local_node.chain().get_storage();
@@ -36,7 +39,6 @@ async fn sync_block_process(
3639
registry.service_ref::<BlockConnectorService<MockTxPoolService>>(),
3740
)?;
3841

39-
let worker_scheduler = Arc::new(WorkerScheduler::new());
4042
let (sync_task, _task_handle, task_event_counter) = full_sync_task(
4143
current_block_id,
4244
target.clone(),
@@ -54,6 +56,7 @@ async fn sync_block_process(
5456
local_node.sync_dag_store.clone(),
5557
worker_scheduler.clone(),
5658
)?;
59+
worker_scheduler.tell_worker_to_start().await;
5760
let branch = sync_task.await?;
5861
info!("checking branch in sync service is the same as target's branch");
5962
assert_eq!(branch.current_header().id(), target.target_id.id());

0 commit comments

Comments
 (0)