Skip to content

Commit b1f9157

Browse files
committed
Ensure ids cannot be reused while still in use.
1 parent ce855da commit b1f9157

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

async_substrate_interface/async_substrate.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,7 @@ def __init__(
541541
now = 0.0
542542
self.last_received = now
543543
self.last_sent = now
544+
self._in_use_ids = set()
544545

545546
async def __aenter__(self):
546547
self._in_use += 1
@@ -648,6 +649,9 @@ async def send(self, payload: dict) -> int:
648649
id: the internal ID of the request (incremented int)
649650
"""
650651
original_id = get_next_id()
652+
while original_id in self._in_use_ids:
653+
original_id = get_next_id()
654+
self._in_use_ids.add(original_id)
651655
# self._open_subscriptions += 1
652656
await self.max_subscriptions.acquire()
653657
try:
@@ -670,6 +674,7 @@ async def retrieve(self, item_id: int) -> Optional[dict]:
670674
"""
671675
try:
672676
item = self._received.pop(item_id)
677+
self._in_use_ids.remove(item_id)
673678
self.max_subscriptions.release()
674679
return item
675680
except KeyError:

0 commit comments

Comments
 (0)