element-hq / element-hq/synapse

Appservice read receipt delivery silently skips receipts in batches larger than 100

Open
#20,096 0 comments 0 reactions 0 assignees View on GitHub
A-Application-Service A-Read-Receipts
Dominant language
Python
Stars
4.6k
Forks
600
Avg merge
5d 22h
Merged PRs (30d)
51

Description

When Synapse sends read receipts to an appservice, each delivery includes at most the 100 most recent receipts that accumulated since the previous delivery, and Synapse then records the whole period as handled.

If more than 100 receipts arrive between two deliveries, the older ones are skipped.

The cap comes from matrix-org/synapse#8744, which introduced it so that a newly registered appservice wouldn't be flooded with the server's entire receipt history **on its first transaction**.

Outside of the first transaction, I'm not sure this behavior is 100% intended, is the receipt delivery to appservice best effort? Or is it important to send them all?

Contributor guide

Open the contributing guide

Research direction

Trace Synapse's appservice read-receipt delivery path and review the 100-receipt cap introduced by matrix-org/synapse#8744. First establish whether the cap should apply only to the first transaction or to every delivery; done means the intended behavior is documented and receipts are no longer silently skipped under the chosen policy.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.