Skip to content

Commit c18124b

Browse files
authored
bounded channel for mem control (#406)
* bounded channel for mem control * make constant
1 parent 7e62e12 commit c18124b

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

node/miner/src/mine.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@ use crate::{
1818

1919
use std::sync::Arc;
2020

21+
const MINE_ANSWER_CHANNEL_CAPACITY: usize = 20;
22+
2123
pub struct PoraService {
2224
mine_context_receiver: broadcast::Receiver<MineContextMessage>,
23-
mine_answer_sender: mpsc::UnboundedSender<AnswerWithoutProof>,
25+
mine_answer_sender: mpsc::Sender<AnswerWithoutProof>,
2426
msg_recv: broadcast::Receiver<MinerMessage>,
2527
loader: Arc<dyn PoraLoader>,
2628

@@ -123,9 +125,9 @@ impl PoraService {
123125
loader: Arc<dyn PoraLoader>,
124126
config: &MinerConfig,
125127
miner_id: H256,
126-
) -> mpsc::UnboundedReceiver<AnswerWithoutProof> {
128+
) -> mpsc::Receiver<AnswerWithoutProof> {
127129
let (mine_answer_sender, mine_answer_receiver) =
128-
mpsc::unbounded_channel::<AnswerWithoutProof>();
130+
mpsc::channel::<AnswerWithoutProof>(MINE_ANSWER_CHANNEL_CAPACITY);
129131
let mine_range = MineRangeConfig {
130132
start_position: Some(0),
131133
end_position: Some(u64::MAX),
@@ -218,7 +220,7 @@ impl PoraService {
218220

219221
if let Some(answer) = miner.batch_iteration(nonce, self.iter_batch).await {
220222
info!("Hit Pora answer {:?}", answer);
221-
if self.mine_answer_sender.send(answer).is_err() {
223+
if self.mine_answer_sender.send(answer).await.is_err() {
222224
warn!("Mine submitter channel closed");
223225
}
224226
} else if cpu_percent < 100 {

node/miner/src/submitter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use crate::watcher::MineContextMessage;
1818
use zgs_spec::{BYTES_PER_SEAL, SECTORS_PER_SEAL};
1919

2020
pub struct Submitter {
21-
mine_answer_receiver: mpsc::UnboundedReceiver<AnswerWithoutProof>,
21+
mine_answer_receiver: mpsc::Receiver<AnswerWithoutProof>,
2222
mine_context_receiver: broadcast::Receiver<MineContextMessage>,
2323
mine_contract: PoraMine<MineServiceMiddleware>,
2424
flow_contract: ZgsFlow<Provider<RetryClient<Http>>>,
@@ -29,7 +29,7 @@ pub struct Submitter {
2929
impl Submitter {
3030
pub fn spawn(
3131
executor: TaskExecutor,
32-
mine_answer_receiver: mpsc::UnboundedReceiver<AnswerWithoutProof>,
32+
mine_answer_receiver: mpsc::Receiver<AnswerWithoutProof>,
3333
mine_context_receiver: broadcast::Receiver<MineContextMessage>,
3434
provider: Arc<Provider<RetryClient<Http>>>,
3535
signing_provider: Arc<MineServiceMiddleware>,

0 commit comments

Comments
 (0)