Skip to content

Commit

Permalink
Start next plotting process in a pool when one of the attempts succeeded
Browse files Browse the repository at this point in the history
  • Loading branch information
nazar-pc committed Dec 9, 2024
1 parent a526b68 commit 8689b56
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion crates/subspace-farmer/src/plotter/pool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
use crate::plotter::{Plotter, SectorPlottingProgress};
use async_trait::async_trait;
use event_listener::Event;
use futures::channel::mpsc;
use futures::future;
use std::any::type_name_of_val;
use std::pin::pin;
use std::time::Duration;
use subspace_core_primitives::sectors::SectorIndex;
use subspace_core_primitives::PublicKey;
Expand All @@ -18,6 +21,7 @@ use tracing::{error, trace};
pub struct PoolPlotter {
plotters: Vec<Box<dyn Plotter + Send + Sync>>,
retry_interval: Duration,
notification: Event,
}

#[async_trait]
Expand Down Expand Up @@ -66,6 +70,7 @@ impl Plotter for PoolPlotter {
)
.await
{
self.notification.notify_relaxed(1);
return;
}
}
Expand All @@ -74,7 +79,11 @@ impl Plotter for PoolPlotter {
retry_interval = ?self.retry_interval,
"All plotters are busy, will wait and try again later"
);
tokio::time::sleep(self.retry_interval).await;
future::select(
pin!(tokio::time::sleep(self.retry_interval)),
self.notification.listen(),
)
.await;
}
}

Expand All @@ -99,6 +108,7 @@ impl Plotter for PoolPlotter {
)
.await
{
self.notification.notify_relaxed(1);
return true;
}
}
Expand All @@ -113,6 +123,7 @@ impl PoolPlotter {
Self {
plotters,
retry_interval,
notification: Event::new(),
}
}
}

0 comments on commit 8689b56

Please sign in to comment.