ProtocolStateException when trying to share a forum
A user reported that every time they try to share a forum, Briar fails to load the list of contacts to share it with.
- Android version: 13
- Phone model: Honor NTH-NX9
- Briar version: 1.5.7 (6ae601e3)
Edited log:
09-14 09:48:26.873 I/BaseActivity: Pausing ForumActivity
09-14 09:48:26.884 I/BaseActivity: Creating ShareForumActivity
09-14 09:48:26.895 I/BaseActivity: Starting ShareForumActivity
09-14 09:48:26.895 I/BaseActivity: Resuming ShareForumActivity
09-14 09:48:27.331 I/BaseActivity: Stopping ForumActivity
09-14 09:48:30.376 W/ContactSelectorControllerImpl: org.briarproject.briar.api.client.ProtocolStateException
org.briarproject.briar.api.client.ProtocolStateException
at org.briarproject.briar.sharing.SharingManagerImpl.getSharingStatus(SharingManagerImpl.java:510)
at org.briarproject.briar.sharing.SharingManagerImpl.getSharingStatus(SharingManagerImpl.java:480)
at org.briarproject.briar.android.sharing.ShareForumControllerImpl.getSharingStatus(ShareForumControllerImpl.java:53)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl.lambda$loadContacts$0(ContactSelectorControllerImpl.java:58)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl.$r8$lambda$3abQlDMLIGMlOAkNr01IGOPM62Q(Unknown Source:0)
at org.briarproject.briar.android.contactselection.ContactSelectorControllerImpl$$ExternalSyntheticLambda0.run(Unknown Source:8)
at org.briarproject.briar.android.controller.DbControllerImpl.lambda$runOnDbThread$0(DbControllerImpl.java:36)
at org.briarproject.briar.android.controller.DbControllerImpl.$r8$lambda$JAD5-f_MagcCZjTRNXknhcwg-tw(Unknown Source:0)
at org.briarproject.briar.android.controller.DbControllerImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
09-14 09:48:30.381 I/BaseActivity: Pausing ShareForumActivity
09-14 09:48:30.390 I/BaseActivity: Starting ForumActivity
09-14 09:48:30.390 I/BaseActivity: Resuming ForumActivity
09-14 09:48:30.831 I/BaseActivity: Stopping ShareForumActivity
09-14 09:48:30.831 I/BaseActivity: Destroying ShareForumActivity
The exception is thrown because the state machine is in the LOCAL_LEFT
or REMOTE_HANGING
state.
We had a discussion about how to handle these states and I suggested throwing this exception on the assumption that the states should only be seen in the rare case where the user has left the forum more-or-less simultaneously with trying to share it. Clearly that assumption was wrong, because this user reports that they can reproduce the bug reliably. So the state machine has ended up in one of those states despite the user still belonging to the forum.
My guess would be that the user left and then rejoined the forum.