diff --git a/tx-pool/src/verify_mgr.rs b/tx-pool/src/verify_mgr.rs index 6ca12f5764..8f5a6944fc 100644 --- a/tx-pool/src/verify_mgr.rs +++ b/tx-pool/src/verify_mgr.rs @@ -83,15 +83,21 @@ impl Worker { if self.tasks.read().await.is_empty() { return; } + // pick a entry to run verify - let entry = match self - .tasks - .write() - .await - .pop_front(self.role == WorkerRole::OnlySmallCycleTx) - { - Some(entry) => entry, - None => return, + let entry = { + let mut tasks = self.tasks.write().await; + match tasks.pop_front(self.role == WorkerRole::OnlySmallCycleTx) { + Some(entry) => entry, + None => { + tasks.ready_rx.notify_one(); + debug!( + "Worker (role: {:?}) queue is empty after pop_front, notify others now", + self.role + ); + return; + } + } }; if let Some((res, snapshot)) = self