From 0d306357d3e25ba8ed63f3dcba31dd039fb4bd2b Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 3 Jan 2024 13:32:20 +0200 Subject: [PATCH] fix: cache extrinsic events (#1327) Co-authored-by: Niklas Adolfsson --- subxt/src/blocks/block_types.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/subxt/src/blocks/block_types.rs b/subxt/src/blocks/block_types.rs index 2b160ea2d2..a1cb01ec25 100644 --- a/subxt/src/blocks/block_types.rs +++ b/subxt/src/blocks/block_types.rs @@ -123,13 +123,15 @@ where // Acquire lock on the events cache. We either get back our events or we fetch and set them // before unlocking, so only one fetch call should ever be made. We do this because the // same events can be shared across all extrinsics in the block. - let lock = cached_events.lock().await; + let mut lock = cached_events.lock().await; let events = match &*lock { Some(events) => events.clone(), None => { - events::EventsClient::new(client.clone()) + let events = events::EventsClient::new(client.clone()) .at(block_hash) - .await? + .await?; + lock.replace(events.clone()); + events } };