You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The hangup method in the DIDRotateManager is defined as follows:
asyncdefhangup(self, conn: ConnRecord) ->Hangup:
"""Hangup the connection. Args: conn (ConnRecord): The connection to hangup. """hangup=Hangup()
asyncwithself.profile.session() assession:
awaitconn.delete_record(session)
responder=self.profile.inject(BaseResponder)
awaitresponder.send(hangup, connection_id=conn.connection_id)
returnhangup
As you can see, we call await conn.delete_record(session) before we submit the hangup request to the Responder. As far as I can tell, deleting the record before hanging up is the cause of the following unhandled exception:
Handler error: BaseConnectionManager.get_connection_targets
Handler error: upgrade_middleware
Handler error with exception: Record not found: connection/df4accad-96d9-41fa-b534-a6400966d270
=================
Traceback (most recent call last):
File "/home/aries/.local/lib/python3.12/site-packages/aries_cloudagent/admin/server.py", line 141, in ready_middleware
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
...
File "/home/aries/.local/lib/python3.12/site-packages/aries_cloudagent/protocols/did_rotate/v1_0/routes.py", line 101, in hangup
msg = await did_rotate_mgr.hangup(conn)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/aries/.local/lib/python3.12/site-packages/aries_cloudagent/protocols/did_rotate/v1_0/manager.py", line 86, in hangup
await responder.send(hangup, connection_id=conn.connection_id)
File "/home/aries/.local/lib/python3.12/site-packages/aries_cloudagent/messaging/responder.py", line 104, in send
return await self.send_outbound(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/aries/.local/lib/python3.12/site-packages/aries_cloudagent/admin/server.py", line 108, in send_outbound
return await self._send(profile, message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/aries/.local/lib/python3.12/site-packages/aries_cloudagent/core/conductor.py", line 665, in outbound_message_router
raise StorageNotFoundError(f"Record not found: {record_type}/{record_id}")
aries_cloudagent.storage.error.StorageNotFoundError: Record not found: connection/df4accad-96d9-41fa-b534-a6400966d270
Error handling request
This internal server error occurs sporadically / inconsistently, and so it appears to be a race condition based on how quickly the deleted record reflects in storage, after which it cannot be used in outbound_message_router to complete the hangup.
A subsequent retry of the hangup, after the 500, will then yield a 404, as record has been deleted.
The method should be made resilient so that exceptions are handled, and retrying is possible if necessary.
My guess is that await conn.delete_record(session) should just be moved after the hangup is sent to the responder, but that may be naive, as I'm not sure. I'll test a solution in the next couple days, but feedback is welcome in the meantime.
Edit: first observed with v1.0.0, but also with latest release
The text was updated successfully, but these errors were encountered:
The
hangup
method in the DIDRotateManager is defined as follows:As you can see, we call
await conn.delete_record(session)
before we submit thehangup
request to the Responder. As far as I can tell, deleting the record before hanging up is the cause of the following unhandled exception:This internal server error occurs sporadically / inconsistently, and so it appears to be a race condition based on how quickly the deleted record reflects in storage, after which it cannot be used in
outbound_message_router
to complete the hangup.A subsequent retry of the hangup, after the 500, will then yield a 404, as record has been deleted.
The method should be made resilient so that exceptions are handled, and retrying is possible if necessary.
My guess is that
await conn.delete_record(session)
should just be moved after the hangup is sent to the responder, but that may be naive, as I'm not sure. I'll test a solution in the next couple days, but feedback is welcome in the meantime.Edit: first observed with v1.0.0, but also with latest release
The text was updated successfully, but these errors were encountered: