Skip to content

Commit 1c09484

Browse files
committed
Handle 'usurped' error from substrate
1 parent 35409e4 commit 1c09484

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

async_substrate_interface/async_substrate.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3987,6 +3987,15 @@ async def result_handler(message: dict, subscription_id) -> tuple[dict, bool]:
39873987
message_result = {
39883988
k.lower(): v for k, v in message["params"]["result"].items()
39893989
}
3990+
if "usurped" in message_result:
3991+
logger.error(
3992+
f"Subscription {subscription_id} usurped: {message_result}"
3993+
)
3994+
async with self.ws as ws:
3995+
await ws.unsubscribe(subscription_id)
3996+
raise SubstrateRequestException(
3997+
f"Subscription {subscription_id} usurped: {message_result}"
3998+
)
39903999

39914000
if "finalized" in message_result and wait_for_finalization:
39924001
logger.debug("Extrinsic finalized. Unsubscribing.")
@@ -3998,7 +4007,7 @@ async def result_handler(message: dict, subscription_id) -> tuple[dict, bool]:
39984007
"finalized": True,
39994008
}, True
40004009
elif (
4001-
any(x in message_result for x in ["inblock", "inBlock"])
4010+
"inblock" in message_result
40024011
and wait_for_inclusion
40034012
and not wait_for_finalization
40044013
):

async_substrate_interface/sync_substrate.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3170,6 +3170,15 @@ def result_handler(message: dict, subscription_id) -> tuple[dict, bool]:
31703170
k.lower(): v for k, v in message["params"]["result"].items()
31713171
}
31723172

3173+
if "usurped" in message_result:
3174+
logger.error(
3175+
f"Subscription {subscription_id} usurped: {message_result}"
3176+
)
3177+
self.rpc_request("author_unwatchExtrinsic", [subscription_id])
3178+
raise SubstrateRequestException(
3179+
f"Subscription {subscription_id} usurped: {message_result}"
3180+
)
3181+
31733182
if "finalized" in message_result and wait_for_finalization:
31743183
# Created as a task because we don't actually care about the result
31753184
# TODO change this logic

0 commit comments

Comments
 (0)