mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-06 14:33:10 -06:00
* Add a per-room mutex to federationapi when processing transactions This has numerous benefits: - Prevents us doing lots of state resolutions in busy rooms. Previously, room forks would always result in a state resolution being performed immediately, without checking if we were already doing this in a different transaction. Now they will queue up, resulting in fewer calls to `/state_ids`, `/g_m_e`, etc. - Prevents memory usage from growing too large as a result and potentially OOMing. And costs: - High traffic rooms will be slightly slower due to head-of-line blocking from other servers, though this has always been an issue as roomserver has a per-room mutex already. * Fix unit tests * Correct mutex lock ordering |
||
|---|---|---|
| .. | ||
| backfill.go | ||
| devices.go | ||
| eventauth.go | ||
| events.go | ||
| invite.go | ||
| join.go | ||
| keys.go | ||
| leave.go | ||
| missingevents.go | ||
| peek.go | ||
| profile.go | ||
| publicrooms.go | ||
| query.go | ||
| routing.go | ||
| send.go | ||
| send_test.go | ||
| state.go | ||
| threepid.go | ||
| version.go | ||