-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to get person credential #2226
Comments
While we can do work on the server/mediator side to increase stability/availability, the wallet should not assume that a websocket connection is long lived. The connection can be interrupted at anytime by any reason, but the wallet should be resilient and try to re-connect. |
Created some test mechanics here. Unable to reproduce outside of the mobile environment (on a mobile device). |
Current Findings:
Next Steps:
|
There is no real substance to implicit message pickup. It is just a matter of having a long lived connection (WebSocket) and sending a trust ping. Assuming then the mediator is smart enough to figure out it has N messages queued up and it will send them all, in the proper order, to the client (wallet): From MediationRecipientApi.ts L302
Looking through other code there are only some mechanics to deal with opening / closing the websocket. Nothing specific to starting pickup or anything else related to message pickup. Either all messages are not being sent or something is getting jammed up with Also noticed this error is ok, it results from Credo not being able to find the previously deleted credential. May not be a problem but the exception may be jamming up the get person logic.
Next Steps:
|
|
Important You need an existing un-revoked Person credential in the wallet to trigger this issue. The reason is, when the app comes into the foreground a trust ping is set which will trigger a message to be delivered. The first message is usually the revocation message which does nothing to advance the workflow. If you don't have a Person credential, the first credential is the offer which allows the workflow to work as expected. |
In an Implicit connection a trust ping is sent to start the pickup strategy. When a trust ping is sent it triggers the mediator to deliver one message. This issue can be kludged by wrapping the trust ping logic when starting mediation in a |
TLDR; The "Implicit" message pickup strategy is working as expected which is why this issue can be reproduced across different technologies. There are limitations of the implicit pickup mechanism and Pickup v2 is recommend or implementing similar solutions to ensure reliable message delivery in ACA-Py agent systems. Problems with Implicit Pickup:
Alternatives and Solutions:
|
I tried other message pickup strategies, both seem to produce similar results as Implicit. Credo does not seem to want to go into any other mode by default/
This triggers polling, but this error message is repated in the mediator logs:
and
If I force it to use
And the same error in the mediator logs:
|
The status request works with the Indecio cloud mediator:
I've confirmed that NOTE: There is probably an issue in Credo where it always starts / tries implicit pickup first, but message retrieval can easily be restarted in |
HA Mediator work will block this issue from completion. |
The latest build of BC Wallet has fixed this issue in most scenarios, with the sole remaining scenario being:
From diving into Credo, it appears the events are still occurring and received by the agent but the Credo react hooks are no longer picking up those changes and propagating them to reactive state. To summarize:
|
There are some Android-specific issues remaining. Moving back to QA |
Also worth mentioning, while Lucas and I were experimenting with mediator load tests, he noticed the version of ACA-Py that the current mediator is running is very old. It uses ACA-Py v0.10.4 which was released Oct 9, 2023. ACA-Py is now on 1.2.2 |
User reported unable to get person credential. Issue seems to be consistent for him but intermittent for others. On backgrounding / foregrounding the app message trickle in one at a time.
There may be two different issues:
1. No Messages
mediator.dev.animo.id
and that worked no better.2. Hang
You will see this in the mediator logs, at which point the BC Wallet app will be stalled at "Just a moment....". For both 1.0.20 and 1.0.21 it repeats 3x.
The text was updated successfully, but these errors were encountered: