From 742730c8655cbf87ff27953a66311785426ba56d Mon Sep 17 00:00:00 2001 From: Robert Habermeier Date: Sun, 18 Aug 2019 17:12:46 +0200 Subject: [PATCH] error variant for failed deadline compute in validation worker (#383) * error variant for failed deadline compute * fix compilation --- polkadot/validation/src/error.rs | 2 ++ polkadot/validation/src/lib.rs | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/polkadot/validation/src/error.rs b/polkadot/validation/src/error.rs index d3f7f973d6..fd28080afb 100644 --- a/polkadot/validation/src/error.rs +++ b/polkadot/validation/src/error.rs @@ -45,6 +45,8 @@ pub enum Error { /// Timer failed #[display(fmt = "Timer failed: {}", _0)] Timer(std::io::Error), + #[display(fmt = "Failed to compute deadline of now + {:?}", _0)] + DeadlineComputeFailure(std::time::Duration), /// Unable to dispatch agreement future #[display(fmt = "Unable to dispatch agreement future: {:?}", _0)] Executor(futures::future::ExecuteErrorKind), diff --git a/polkadot/validation/src/lib.rs b/polkadot/validation/src/lib.rs index 4f4e9a2762..bcb7b45e2c 100644 --- a/polkadot/validation/src/lib.rs +++ b/polkadot/validation/src/lib.rs @@ -627,6 +627,14 @@ impl consensus::Proposer for Proposer where last_included: initial_included, }; + let deadline_diff = max_duration - max_duration / 3; + let deadline = match Instant::now().checked_add(deadline_diff) { + None => return Either::Right( + future::err(Error::DeadlineComputeFailure(deadline_diff)), + ), + Some(d) => d, + }; + Either::Left(CreateProposal { parent_hash: self.parent_hash.clone(), parent_number: self.parent_number.clone(), @@ -639,7 +647,7 @@ impl consensus::Proposer for Proposer where inherent_data: Some(inherent_data), inherent_digests, // leave some time for the proposal finalisation - deadline: Instant::now() + max_duration - max_duration / 3, + deadline, }) } }