Skip to content

Reactions received before the message reacted to are trashed #8367

Description

@link2xt

It is possible that Bob's reaction to Alice's message is received before Alice's message. One common reason for this is that Alice and Bob use different sending relays (SMTP servers) and these relays may not be able to deliver messages to some of your relays. Eventually all messages are received, but when you come online, it is possible that you first fetch the messages from a relay that has only Bob's messages delivered, and then fetch from another relay that has Alice's messages.

I just got this problem that my Desktop has some reactions missing because they are trashed this way. There is a related issue #8365, i had both problems in the same chat. I now have a message that has 9 reactions on Android, but only four reactions on Desktop, from just a day ago.

This can be reproduced with a straightforward Rust test. What to do is not that straighforward, i don't have a concrete plan and have not looked at the SQL schema, but whatever is done, the end result should be Alice's message with Bob's reaction even though Bob's reaction is received first and Alice's message is received later. If Alice's message never arrives, orphan reactions should be cleaned up eventually, can probably be done somewhere in housekeeping.

Metadata

Metadata

Assignees

Labels

bugSomething is not working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions