From d250f348a3054555db0e86a44cba69c786abce57 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 23 May 2019 07:50:45 +0200 Subject: [PATCH] add_sync_notifier in EthPubSubClient holds on to a Client for too long (#10689) Need a weak ref so shutdown works --- rpc/src/v1/impls/eth_pubsub.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rpc/src/v1/impls/eth_pubsub.rs b/rpc/src/v1/impls/eth_pubsub.rs index 7dc860748..39ae8754d 100644 --- a/rpc/src/v1/impls/eth_pubsub.rs +++ b/rpc/src/v1/impls/eth_pubsub.rs @@ -64,13 +64,15 @@ impl EthPubSubClient where F: 'static + Fn(SyncState) -> Option + Send { - let handler = self.handler.clone(); + let weak_handler = Arc::downgrade(&self.handler); self.handler.executor.spawn( receiver.for_each(move |state| { if let Some(status) = f(state) { - handler.notify_syncing(status); - return Ok(()) + if let Some(handler) = weak_handler.upgrade() { + handler.notify_syncing(status); + return Ok(()) + } } Err(()) })