From f7bd3a95a01245e73a504b515a2c2160a0a06f99 Mon Sep 17 00:00:00 2001 From: Bradley Olson <34992650+BradleyOlson64@users.noreply.github.com> Date: Thu, 30 Mar 2023 13:33:25 -0700 Subject: [PATCH] Drop timers for new requests of active participations (#6974) * First pass adding logs * fmt * Adjustments * Get rid of extra timers for running participations * fmt * Handling timer discards more elegantly --- .../src/participation/mod.rs | 5 +++-- .../src/participation/queues/mod.rs | 19 ++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/polkadot/node/core/dispute-coordinator/src/participation/mod.rs b/polkadot/node/core/dispute-coordinator/src/participation/mod.rs index e366adc5fac..a4000e626ab 100644 --- a/polkadot/node/core/dispute-coordinator/src/participation/mod.rs +++ b/polkadot/node/core/dispute-coordinator/src/participation/mod.rs @@ -160,10 +160,11 @@ impl Participation { &mut self, ctx: &mut Context, priority: ParticipationPriority, - req: ParticipationRequest, + mut req: ParticipationRequest, ) -> Result<()> { - // Participation already running - we can ignore that request: + // Participation already running - we can ignore that request, discarding its timer: if self.running_participations.contains(req.candidate_hash()) { + req.discard_timer(); return Ok(()) } // Available capacity - participate right away (if we already have a recent block): diff --git a/polkadot/node/core/dispute-coordinator/src/participation/queues/mod.rs b/polkadot/node/core/dispute-coordinator/src/participation/queues/mod.rs index a5a5ab962f5..01950973e05 100644 --- a/polkadot/node/core/dispute-coordinator/src/participation/queues/mod.rs +++ b/polkadot/node/core/dispute-coordinator/src/participation/queues/mod.rs @@ -134,6 +134,11 @@ impl ParticipationRequest { pub fn session(&self) -> SessionIndex { self.session } + pub fn discard_timer(&mut self) { + if let Some(timer) = self.request_timer.take() { + timer.stop_and_discard(); + } + } pub fn into_candidate_info(self) -> (CandidateHash, CandidateReceipt) { let Self { candidate_hash, candidate_receipt, .. } = self; (candidate_hash, candidate_receipt) @@ -246,17 +251,12 @@ impl Queues { // Remove any best effort entry, using it to replace our new // request. if let Some(older_request) = self.best_effort.remove(&comparator) { - if let Some(timer) = req.request_timer { - timer.stop_and_discard(); - } + req.discard_timer(); req = older_request; } // Keeping old request if any. match self.priority.entry(comparator) { - Entry::Occupied(_) => - if let Some(timer) = req.request_timer { - timer.stop_and_discard(); - }, + Entry::Occupied(_) => req.discard_timer(), Entry::Vacant(vac) => { vac.insert(req); }, @@ -274,10 +274,7 @@ impl Queues { } // Keeping old request if any. match self.best_effort.entry(comparator) { - Entry::Occupied(_) => - if let Some(timer) = req.request_timer { - timer.stop_and_discard(); - }, + Entry::Occupied(_) => req.discard_timer(), Entry::Vacant(vac) => { vac.insert(req); }, -- GitLab