element-hq / element-hq/synapse
Appservice read receipt delivery silently skips receipts in batches larger than 100
- 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
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