Code of conduct
Self-training on how to write a bug report
Is there an existing issue for this?
Current Behavior
When restoring an existing Session account (by using the Recovery Phrase), sometimes the data is synced with partial success.
Example:
Alice and Bob start a conversation (AKA Thread) and exchange 10 messages.
When Alice tries to restore their account, the conversation only shows 7 messages, with 3 non-consecutive messages missing. If that happens, it's always the same 3 messages.
However, if Alice leaves the application running, after (roughly) 15 minutes the missing 3 messages get synced up and the conversation is then fully synced.
Technical details
The swarm that I observed consists of 7 SNodes.
I'll list them in their masked form but if need be I can provide full IPs.
| SNode |
IP (masked) |
Has an issue |
| 1 |
178.xxx.xxx.30 |
Y |
| 2 |
209.xxx.xxx.xxx |
N |
| 3 |
10x.xxx.xxx.xxx |
N |
| 4 |
192.xxx.xxx.238 |
Y |
| 5 |
188.xxx.xxx.32 |
Y |
| 6 |
8x.xxx.xxx.xxx |
N |
| 7 |
2.xxx.xxx.xxx |
N |
As the app will cycle through them to avoid hitting the same one repeatedly, the issue gives an appearance of randomness. By modifying the application code you can remove randomness of the behaviour. To achieve that change the method getSwarm (in LokiAPIDatabase.kt) to always return the same SNode.
Once the randomness is out of the way, it becomes apparent that if the client app is asking SNode oxen-io/session-android#1 for the account information, the response will not contain any messages that are stored on SNode oxen-io/session-android#4 or SNode oxen-io/session-android#5.
Expected Behavior
When restoring an existing account via "Continue Your Session" all data should be synced on the first launch. Granted if there is heaps of data to sync (over 512) the chunking will happen but the process should be one continuous stream of data until all is done, without the need to wait for 15min windows or relaunching the app (somewhat a workaround).
Steps To Reproduce
- Create 2 accounts (i.e. Alice and Bob)
- Record their Recover Phrases
- Exchange a few messages between them
- Modify the app to only use SNode#4 (or SNode#5) as explained above
- Launch the app and send at least one message from Alice to Bob (or vice-versa)
- Modify the app again to only use SNode#1
- Launch the app and clear the data (Settings -> Clear Data -> Clear Device Only)
- Launch the app again, use
Continue Your Session and notice if messages (from step 5) are missing in the Thread
Android Version
Android 13
Session Version
1.17.4
Anything else?
This looks like an SNode issue rather than the Client app. I'm unsure which "back-end" project exactly to log this issue against, hence I created it here.
Code of conduct
Self-training on how to write a bug report
Is there an existing issue for this?
Current Behavior
When restoring an existing Session account (by using the Recovery Phrase), sometimes the data is synced with partial success.
Example:
Alice and Bob start a conversation (AKA Thread) and exchange 10 messages.
When Alice tries to restore their account, the conversation only shows 7 messages, with 3 non-consecutive messages missing. If that happens, it's always the same 3 messages.
However, if Alice leaves the application running, after (roughly) 15 minutes the missing 3 messages get synced up and the conversation is then fully synced.
Technical details
The swarm that I observed consists of 7
SNodes.I'll list them in their masked form but if need be I can provide full IPs.
As the app will cycle through them to avoid hitting the same one repeatedly, the issue gives an appearance of randomness. By modifying the application code you can remove randomness of the behaviour. To achieve that change the method
getSwarm(inLokiAPIDatabase.kt) to always return the sameSNode.Once the randomness is out of the way, it becomes apparent that if the client app is asking
SNode oxen-io/session-android#1for the account information, the response will not contain any messages that are stored onSNode oxen-io/session-android#4orSNode oxen-io/session-android#5.Expected Behavior
When restoring an existing account via "Continue Your Session" all data should be synced on the first launch. Granted if there is heaps of data to sync (over 512) the chunking will happen but the process should be one continuous stream of data until all is done, without the need to wait for 15min windows or relaunching the app (somewhat a workaround).
Steps To Reproduce
Continue Your Sessionand notice if messages (from step 5) are missing in the ThreadAndroid Version
Android 13
Session Version
1.17.4
Anything else?
This looks like an
SNodeissue rather than the Client app. I'm unsure which "back-end" project exactly to log this issue against, hence I created it here.