|
1 | 1 | """Routing manager classes for tracking and inspecting routing records.""" |
2 | 2 |
|
| 3 | +import asyncio |
3 | 4 | import logging |
4 | 5 | from typing import Coroutine, Sequence |
5 | 6 |
|
@@ -58,25 +59,30 @@ async def get_recipient(self, recip_verkey: str) -> RouteRecord: |
58 | 59 | if not recip_verkey: |
59 | 60 | raise RoutingManagerError("Must pass non-empty recip_verkey") |
60 | 61 |
|
61 | | - try: |
62 | | - LOGGER.error(">>> fetching routing record for verkey: " + recip_verkey) |
63 | | - async with self._profile.session() as session: |
64 | | - record = await RouteRecord.retrieve_by_recipient_key( |
65 | | - session, recip_verkey |
| 62 | + pause = True |
| 63 | + record = None |
| 64 | + while not record: |
| 65 | + try: |
| 66 | + LOGGER.error(">>> fetching routing record for verkey: " + recip_verkey) |
| 67 | + async with self._profile.session() as session: |
| 68 | + record = await RouteRecord.retrieve_by_recipient_key( |
| 69 | + session, recip_verkey |
| 70 | + ) |
| 71 | + LOGGER.error(">>> FOUND routing record for verkey: " + recip_verkey) |
| 72 | + return record |
| 73 | + except StorageDuplicateError: |
| 74 | + LOGGER.error(">>> DUPLICATE routing record for verkey: " + recip_verkey) |
| 75 | + raise RouteNotFoundError( |
| 76 | + f"More than one route record found with recipient key: {recip_verkey}" |
66 | 77 | ) |
67 | | - LOGGER.error(">>> FOUND routing record for verkey: " + recip_verkey) |
68 | | - except StorageDuplicateError: |
69 | | - LOGGER.error(">>> DUPLICATE routing record for verkey: " + recip_verkey) |
70 | | - raise RouteNotFoundError( |
71 | | - f"More than one route record found with recipient key: {recip_verkey}" |
72 | | - ) |
73 | | - except StorageNotFoundError: |
74 | | - LOGGER.error(">>> NOT FOUND routing record for verkey: " + recip_verkey) |
75 | | - raise RouteNotFoundError( |
76 | | - f"No route found with recipient key: {recip_verkey}" |
77 | | - ) |
78 | | - |
79 | | - return record |
| 78 | + except StorageNotFoundError: |
| 79 | + LOGGER.error(">>> NOT FOUND routing record for verkey: " + recip_verkey) |
| 80 | + if not pause: |
| 81 | + raise RouteNotFoundError( |
| 82 | + f"No route found with recipient key: {recip_verkey}" |
| 83 | + ) |
| 84 | + await asyncio.wait(500) |
| 85 | + pause = False |
80 | 86 |
|
81 | 87 | async def get_routes( |
82 | 88 | self, client_connection_id: str = None, tag_filter: dict = None |
|
0 commit comments