From cf7fde013b31f4b9acaf82f07911e435af19d0ec Mon Sep 17 00:00:00 2001 From: Arnaud Date: Thu, 27 Mar 2025 09:07:14 +0100 Subject: [PATCH] Add lock when subscribing to blocks --- ethers/providers/jsonrpc/subscriptions.nim | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ethers/providers/jsonrpc/subscriptions.nim b/ethers/providers/jsonrpc/subscriptions.nim index 3602a55..a7f8855 100644 --- a/ethers/providers/jsonrpc/subscriptions.nim +++ b/ethers/providers/jsonrpc/subscriptions.nim @@ -144,10 +144,14 @@ method subscribeBlocks(subscriptions: WebSocketSubscriptions, let res = Block.fromJson(arguments{"result"}).mapFailure(SubscriptionError) onBlock(res) - convertErrorsToSubscriptionError: - let id = await subscriptions.client.eth_subscribe("newHeads") - subscriptions.callbacks[id] = callback - return id + withLock(subscriptions): + convertErrorsToSubscriptionError: + let id = await subscriptions.client.eth_subscribe("newHeads") + subscriptions.callbacks[id] = callback + return id + except AsyncLockError as e: + error "Lock error when trying to subscribe to blocks", err = e.msg + raise newException(SubscriptionError, "Cannot subscribe to the blocks because of lock error") method subscribeLogs(subscriptions: WebSocketSubscriptions, filter: EventFilter,