From 029fa5914c31faef07364b14bfe455744dde896a Mon Sep 17 00:00:00 2001 From: Acat Date: Mon, 12 May 2025 17:32:44 +0800 Subject: [PATCH] refactor(mempool): Optimize validation task lock duration by moving async fut creation outside lock (#16159) Co-authored-by: Matthias Seitz --- crates/transaction-pool/src/validate/task.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/crates/transaction-pool/src/validate/task.rs b/crates/transaction-pool/src/validate/task.rs index 558cd6dfa2..9514805a9f 100644 --- a/crates/transaction-pool/src/validate/task.rs +++ b/crates/transaction-pool/src/validate/task.rs @@ -171,14 +171,13 @@ where { let res = { let to_validation_task = self.to_validation_task.clone(); - let to_validation_task = to_validation_task.lock().await; let validator = self.validator.clone(); - to_validation_task - .send(Box::pin(async move { - let res = validator.validate_transaction(origin, transaction).await; - let _ = tx.send(res); - })) - .await + let fut = Box::pin(async move { + let res = validator.validate_transaction(origin, transaction).await; + let _ = tx.send(res); + }); + let to_validation_task = to_validation_task.lock().await; + to_validation_task.send(fut).await }; if res.is_err() { return TransactionValidationOutcome::Error(