Description
First thing: I've had this issue for YEARS, and thought I would throw Fable at it while it's in it's trial period. I even took a snapshot of my DB and gave it full access (yes, I got a bit desperate). It found the problem (I'm pretty confident because the fix did indeed fix it, I confirmed the block + invite, etc). Below is the clanker text after I asked it to summarize the issue for me:
One way to get a permanently stuck badge: an invite from an ignored user. All sync implementations filter these invites out (handlers/sliding_sync/room_lists.py and the equivalent in handlers/sync.py), so no client will ever display the invite. But get_badge_count in push/push_tools.py counts len(get_invited_rooms_for_local_user(...)) with no ignored-user filtering, so the invite adds +1 to the push badge forever. I confirmed this on my own homeserver (the invite sat hidden for 4.5 years) and cleared it by rejecting the invite via a raw POST /_matrix/client/v3/rooms/{roomId}/leave with the room ID pulled from the database.
Anyway, apologies for what amounts to an AI issue, but I felt this was a pretty decent find. I never thought I could be so excited to see a badge notification go away!
Steps to reproduce
- user A ignores user B
- B invites A to a room
- A's badge never reaches zero and nothing in any client explains why
Homeserver
kulak.us
Synapse Version
1.153.0
Installation Method
Docker (matrixdotorg/synapse)
Database
Postrgres (single server)
Workers
Single process
Platform
Docker container running on a NAS. The database runs on a separate machine in the same local network.
Configuration
No, very vanilla setup.
Relevant log output
I don't have anything to share here, sorry.
Anything else that would be useful to know?
No response
Description
First thing: I've had this issue for YEARS, and thought I would throw Fable at it while it's in it's trial period. I even took a snapshot of my DB and gave it full access (yes, I got a bit desperate). It found the problem (I'm pretty confident because the fix did indeed fix it, I confirmed the block + invite, etc). Below is the clanker text after I asked it to summarize the issue for me:
One way to get a permanently stuck badge: an invite from an ignored user. All sync implementations filter these invites out (handlers/sliding_sync/room_lists.py and the equivalent in handlers/sync.py), so no client will ever display the invite. But get_badge_count in push/push_tools.py counts len(get_invited_rooms_for_local_user(...)) with no ignored-user filtering, so the invite adds +1 to the push badge forever. I confirmed this on my own homeserver (the invite sat hidden for 4.5 years) and cleared it by rejecting the invite via a raw POST /_matrix/client/v3/rooms/{roomId}/leave with the room ID pulled from the database.
Anyway, apologies for what amounts to an AI issue, but I felt this was a pretty decent find. I never thought I could be so excited to see a badge notification go away!
Steps to reproduce
Homeserver
kulak.us
Synapse Version
1.153.0
Installation Method
Docker (matrixdotorg/synapse)
Database
Postrgres (single server)
Workers
Single process
Platform
Docker container running on a NAS. The database runs on a separate machine in the same local network.
Configuration
No, very vanilla setup.
Relevant log output
I don't have anything to share here, sorry.Anything else that would be useful to know?
No response