diff --git a/node/miner/src/mine.rs b/node/miner/src/mine.rs index 4c192cc1..b73a7074 100644 --- a/node/miner/src/mine.rs +++ b/node/miner/src/mine.rs @@ -18,9 +18,11 @@ use crate::{ use std::sync::Arc; +const MINE_ANSWER_CHANNEL_CAPACITY: usize = 20; + pub struct PoraService { mine_context_receiver: broadcast::Receiver, - mine_answer_sender: mpsc::UnboundedSender, + mine_answer_sender: mpsc::Sender, msg_recv: broadcast::Receiver, loader: Arc, @@ -123,9 +125,9 @@ impl PoraService { loader: Arc, config: &MinerConfig, miner_id: H256, - ) -> mpsc::UnboundedReceiver { + ) -> mpsc::Receiver { let (mine_answer_sender, mine_answer_receiver) = - mpsc::unbounded_channel::(); + mpsc::channel::(MINE_ANSWER_CHANNEL_CAPACITY); let mine_range = MineRangeConfig { start_position: Some(0), end_position: Some(u64::MAX), @@ -218,7 +220,7 @@ impl PoraService { if let Some(answer) = miner.batch_iteration(nonce, self.iter_batch).await { info!("Hit Pora answer {:?}", answer); - if self.mine_answer_sender.send(answer).is_err() { + if self.mine_answer_sender.send(answer).await.is_err() { warn!("Mine submitter channel closed"); } } else if cpu_percent < 100 { diff --git a/node/miner/src/submitter.rs b/node/miner/src/submitter.rs index 99251b1f..ef55731c 100644 --- a/node/miner/src/submitter.rs +++ b/node/miner/src/submitter.rs @@ -18,7 +18,7 @@ use crate::watcher::MineContextMessage; use zgs_spec::{BYTES_PER_SEAL, SECTORS_PER_SEAL}; pub struct Submitter { - mine_answer_receiver: mpsc::UnboundedReceiver, + mine_answer_receiver: mpsc::Receiver, mine_context_receiver: broadcast::Receiver, mine_contract: PoraMine, flow_contract: ZgsFlow>>, @@ -29,7 +29,7 @@ pub struct Submitter { impl Submitter { pub fn spawn( executor: TaskExecutor, - mine_answer_receiver: mpsc::UnboundedReceiver, + mine_answer_receiver: mpsc::Receiver, mine_context_receiver: broadcast::Receiver, provider: Arc>>, signing_provider: Arc,