v0.98.0
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync Major release preparing for an official v1.
Features:
- Add
typing
extension. - Add
receipts
extension. - Add comprehensive prometheus
/metrics
activated viaSYNCV3_PROM
. - Add
SYNCV3_PPROF
support. - Add
by_notification_level
sort order. - Add
include_old_rooms
support. - Add support for
$ME
and$LAZY
. - Add correct filtering when
*,*
is used asrequired_state
. - Add
num_live
to each room response to indicate how many timeline entries are live.
Bug fixes:
- Use a stricter comparison function on ranges: fixes an issue whereby UTs fail on go1.19 due to change in sorting algorithm.
- Send back an
errcode
on HTTP errors (e.g expired sessions). - Remove
unsigned.txn_id
on insertion into the DB. Otherwise other users would see other users txn IDs :( - Improve range delta algorithm: previously it didn't handle cases like
[0,20] -> [20,30]
and would panic. - Send HTTP 400 for invalid range requests.
- Don't publish no-op unread counts which just adds extra noise.
- Fix leaking DB connections which could eventually consume all available connections.
- Ensure we always unblock WaitUntilInitialSync even on invalid access tokens. Other code relies on WaitUntilInitialSync() actually returning at some point e.g on startup we have N workers which bound the number of concurrent pollers made at any one time, we need to not just hog a worker forever.
Improvements:
- Greatly improve startup times of sync3 handlers by improving
JoinedRoomsTracker
: a modest amount of data would take ~28s to create the handler, now it takes 4s. - Massively improve initial initial v3 sync times, by refactoring
JoinedRoomsTracker
, from ~47s to <1s. - Add
SlidingSyncUntil...
in tests to reduce races. - Tweak the API shape of JoinedUsersForRoom to reduce state block processing time for large rooms from 63s to 39s.
- Add trace task for initial syncs.
- Include the proxy version in UA strings.
- HTTP errors now wait 1s before returning to stop clients tight-looping on error.
- Pending event buffer is now 2000.
- Index the room ID first to cull the most events when returning timeline entries. Speeds up
SelectLatestEventsBetween
by a factor of 8. - Remove cancelled
m.room_key_requests
from the to-device inbox. Cuts down the amount of events in the inbox by ~94% for very large (20k+) inboxes, ~50% for moderate sized (200 events) inboxes. Adds book-keeping to remember the unacked to-device position for each client.