Skip to content

Commit

Permalink
Catch and log universal resolver setup error (openwallet-foundation#3511
Browse files Browse the repository at this point in the history
)

* 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]>
  • Loading branch information
jamshale authored Feb 11, 2025
1 parent 7a040ba commit 29c4599
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 13 deletions.
14 changes: 9 additions & 5 deletions acapy_agent/resolver/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from ..config.injection_context import InjectionContext
from ..config.provider import ClassProvider
from ..resolver.did_resolver import DIDResolver
from .base import ResolverError

LOGGER = logging.getLogger(__name__)

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

if context.settings.get("resolver.universal"):
universal_resolver = ClassProvider(
"acapy_agent.resolver.default.universal.UniversalResolver"
).provide(context.settings, context.injector)
await universal_resolver.setup(context)
registry.register_resolver(universal_resolver)
try:
universal_resolver = ClassProvider(
"acapy_agent.resolver.default.universal.UniversalResolver"
).provide(context.settings, context.injector)
await universal_resolver.setup(context)
registry.register_resolver(universal_resolver)
except ResolverError as err:
LOGGER.warning(f"Universal Resolver setup failed: {err}")

peer_did_1_resolver = ClassProvider(
"acapy_agent.resolver.default.peer1.PeerDID1Resolver"
Expand Down
15 changes: 9 additions & 6 deletions acapy_agent/resolver/default/universal.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,15 @@ async def _resolve(
async def _fetch_resolver_props(self) -> dict:
"""Retrieve universal resolver properties."""
async with aiohttp.ClientSession(headers=self.__default_headers) as session:
async with session.get(f"{self._endpoint}/properties/") as resp:
if 200 <= resp.status < 400:
return await resp.json()
raise ResolverError(
"Failed to retrieve resolver properties: " + await resp.text()
)
try:
async with session.get(f"{self._endpoint}/properties/") as resp:
if 200 <= resp.status < 400:
return await resp.json()
raise ResolverError(
"Failed to retrieve resolver properties: " + await resp.text()
)
except aiohttp.ClientError as err:
raise ResolverError(f"Failed to fetch resolver properties: {err}")

async def _get_supported_did_regex(self):
props = await self._fetch_resolver_props()
Expand Down
5 changes: 3 additions & 2 deletions scenarios/examples/simple/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@
--auto-provision
--log-level debug
--debug-webhooks
--universal-resolver
healthcheck:
test: curl -s -o /dev/null -w '%{http_code}' "http://localhost:3001/status/live" | grep "200" > /dev/null
start_period: 30s
start_period: 50s
interval: 7s
timeout: 5s
retries: 5
retries: 10
depends_on:
tails:
condition: service_started
Expand Down

0 comments on commit 29c4599

Please sign in to comment.