From a7f820d80a55247ac1842374254e446a60f4cde4 Mon Sep 17 00:00:00 2001 From: teor Date: Mon, 12 Dec 2022 09:01:53 +1000 Subject: [PATCH] Move Drop from mempool::ActiveState to mempool::Downloads, to avoid bugs --- zebrad/src/components/mempool.rs | 8 -------- zebrad/src/components/mempool/downloads.rs | 8 +++++--- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/zebrad/src/components/mempool.rs b/zebrad/src/components/mempool.rs index 6c2713378a2..9aa1e3ab4d0 100644 --- a/zebrad/src/components/mempool.rs +++ b/zebrad/src/components/mempool.rs @@ -107,14 +107,6 @@ impl Default for ActiveState { } } -impl Drop for ActiveState { - fn drop(&mut self) { - if let ActiveState::Enabled { tx_downloads, .. } = self { - tx_downloads.cancel_all(); - } - } -} - impl ActiveState { /// Returns the current state, leaving [`Self::Disabled`] in its place. fn take(&mut self) -> Self { diff --git a/zebrad/src/components/mempool/downloads.rs b/zebrad/src/components/mempool/downloads.rs index 16fbcf57894..6ccdfc99660 100644 --- a/zebrad/src/components/mempool/downloads.rs +++ b/zebrad/src/components/mempool/downloads.rs @@ -122,7 +122,7 @@ pub enum TransactionDownloadVerifyError { #[derive(Debug)] pub struct Downloads where - ZN: Service + Send + 'static, + ZN: Service + Send + Clone + 'static, ZN::Future: Send, ZV: Service + Send + Clone + 'static, ZV::Future: Send, @@ -467,14 +467,16 @@ where #[pinned_drop] impl PinnedDrop for Downloads where - ZN: Service + Send + 'static, + ZN: Service + Send + Clone + 'static, ZN::Future: Send, ZV: Service + Send + Clone + 'static, ZV::Future: Send, ZS: Service + Send + Clone + 'static, ZS::Future: Send, { - fn drop(self: Pin<&mut Self>) { + fn drop(mut self: Pin<&mut Self>) { + self.cancel_all(); + metrics::gauge!("mempool.currently.queued.transactions", 0 as f64); } }