Skip to content

Commit 29c4599

Browse files
authored
Catch and log universal resolver setup error (openwallet-foundation#3511)
* Catch and log universal resolver setup error Signed-off-by: jamshale <[email protected]> * Add scneario test Signed-off-by: jamshale <[email protected]> * Add general client exception handling Signed-off-by: jamshale <[email protected]> --------- Signed-off-by: jamshale <[email protected]>
1 parent 7a040ba commit 29c4599

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

acapy_agent/resolver/__init__.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from ..config.injection_context import InjectionContext
66
from ..config.provider import ClassProvider
77
from ..resolver.did_resolver import DIDResolver
8+
from .base import ResolverError
89

910
LOGGER = logging.getLogger(__name__)
1011

@@ -56,11 +57,14 @@ async def setup(context: InjectionContext):
5657
registry.register_resolver(webvh_resolver)
5758

5859
if context.settings.get("resolver.universal"):
59-
universal_resolver = ClassProvider(
60-
"acapy_agent.resolver.default.universal.UniversalResolver"
61-
).provide(context.settings, context.injector)
62-
await universal_resolver.setup(context)
63-
registry.register_resolver(universal_resolver)
60+
try:
61+
universal_resolver = ClassProvider(
62+
"acapy_agent.resolver.default.universal.UniversalResolver"
63+
).provide(context.settings, context.injector)
64+
await universal_resolver.setup(context)
65+
registry.register_resolver(universal_resolver)
66+
except ResolverError as err:
67+
LOGGER.warning(f"Universal Resolver setup failed: {err}")
6468

6569
peer_did_1_resolver = ClassProvider(
6670
"acapy_agent.resolver.default.peer1.PeerDID1Resolver"

acapy_agent/resolver/default/universal.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,15 @@ async def _resolve(
103103
async def _fetch_resolver_props(self) -> dict:
104104
"""Retrieve universal resolver properties."""
105105
async with aiohttp.ClientSession(headers=self.__default_headers) as session:
106-
async with session.get(f"{self._endpoint}/properties/") as resp:
107-
if 200 <= resp.status < 400:
108-
return await resp.json()
109-
raise ResolverError(
110-
"Failed to retrieve resolver properties: " + await resp.text()
111-
)
106+
try:
107+
async with session.get(f"{self._endpoint}/properties/") as resp:
108+
if 200 <= resp.status < 400:
109+
return await resp.json()
110+
raise ResolverError(
111+
"Failed to retrieve resolver properties: " + await resp.text()
112+
)
113+
except aiohttp.ClientError as err:
114+
raise ResolverError(f"Failed to fetch resolver properties: {err}")
112115

113116
async def _get_supported_did_regex(self):
114117
props = await self._fetch_resolver_props()

scenarios/examples/simple/docker-compose.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@
2121
--auto-provision
2222
--log-level debug
2323
--debug-webhooks
24+
--universal-resolver
2425
healthcheck:
2526
test: curl -s -o /dev/null -w '%{http_code}' "http://localhost:3001/status/live" | grep "200" > /dev/null
26-
start_period: 30s
27+
start_period: 50s
2728
interval: 7s
2829
timeout: 5s
29-
retries: 5
30+
retries: 10
3031
depends_on:
3132
tails:
3233
condition: service_started

0 commit comments

Comments
 (0)