From 0de3fda921f2cd4e641c3d0b917e7aa1a321095f Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Wed, 15 Jan 2025 05:59:56 -0500 Subject: [PATCH] Further space out requests for cosigns from the network --- coordinator/cosign/src/evaluator.rs | 37 +++++++++++++++++++---------- coordinator/cosign/src/lib.rs | 10 +++++--- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/coordinator/cosign/src/evaluator.rs b/coordinator/cosign/src/evaluator.rs index 4216d5a7..905e60fc 100644 --- a/coordinator/cosign/src/evaluator.rs +++ b/coordinator/cosign/src/evaluator.rs @@ -1,5 +1,5 @@ use core::future::Future; -use std::time::{Duration, SystemTime}; +use std::time::{Duration, Instant, SystemTime}; use serai_db::*; use serai_task::ContinuallyRan; @@ -77,12 +77,22 @@ pub(crate) fn currently_evaluated_global_session(getter: &impl Get) -> Option<[u pub(crate) struct CosignEvaluatorTask { pub(crate) db: D, pub(crate) request: R, + pub(crate) last_request_for_cosigns: Instant, } impl ContinuallyRan for CosignEvaluatorTask { type Error = String; fn run_iteration(&mut self) -> impl Send + Future> { + let should_request_cosigns = |last_request_for_cosigns: &mut Instant| { + const REQUEST_COSIGNS_SPACING: Duration = Duration::from_secs(60); + if Instant::now() < (*last_request_for_cosigns + REQUEST_COSIGNS_SPACING) { + return false; + } + *last_request_for_cosigns = Instant::now(); + true + }; + async move { let mut known_cosign = None; let mut made_progress = false; @@ -118,12 +128,13 @@ impl ContinuallyRan for CosignEvaluatorTask ContinuallyRan for CosignEvaluatorTask Cosigning { .continually_run(intend_task, vec![evaluator_task_handle]), ); tokio::spawn( - (evaluator::CosignEvaluatorTask { db: db.clone(), request }) - .continually_run(evaluator_task, vec![delay_task_handle]), + (evaluator::CosignEvaluatorTask { + db: db.clone(), + request, + last_request_for_cosigns: Instant::now(), + }) + .continually_run(evaluator_task, vec![delay_task_handle]), ); tokio::spawn( (delay::CosignDelayTask { db: db.clone() })