Releases: matrix-org/sliding-sync
v0.99.9
Bugfixes
- Redact events in the DB on
m.room.redaction
. (#280) - Fix a race (#287) where the proxy's poller would be stuck if the proxied access token expires before the first poll. (#288)
Debugging
- Log setup and processing times for requests. (#278, #281)
- Add GitCommit from
debug.ReadBuildInfo
. (#285)
Full Changelog: v0.99.8...v0.99.9
v0.99.8
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
Bug fixes:
- Fixed a bug which prevented device list changes accumulating beyond 131072 user IDs.
- Fixed a bug which prevented invite state optimisations working correctly.
v0.99.7
Breaking changes
The SYNCV3_JAEGER_URL
env var has been replaced with SYNCV3_OTLP_URL
, which is an HTTPS URL to a suitable OTLP collector, typically listening on :4318
. The proxy can optionally send HTTP Basic authentication to this endpoint via the env vars SYNCV3_OTLP_USERNAME
and SYNCV3_OTLP_PASSWORD
.
Features
- Replace Jaeger exports with OTLP exports. #269
Bug fixes
- v0.99.6 did not increment the version string, so it still reads as v0.99.5.
- DB migration to delete corrupt room snapshots #267
Full Changelog: v0.99.6...v0.99.7
v0.99.6
Fixes
- Don't tell clients about messages from ignored users that the proxy has learned about from other users' pollers. (#238, #239, #240)
- Return
M_UNKNOWN_TOKEN
for unknown tokens (#253) - Prevent the creation of future bogus state snapshots (#255, #266)
- Use LastMessageTimestamp in the case there are no bumpEventTypes defined (#252)
- Improve error handling in the poller (#254)
Improvements
- Improve performance when getting room state after event position (#264)
- Periodically purge pollers for inactive devices (#242)
- Update extension scoping to match the latest MSC draft. This makes it easier for clients to have extensions automatically scoped to their sliding windows and room subscriptions (#149)
- Add
timestamp
to room responses. (#247) - Improve performance of handling device list changes (#225, #244, #246, #249)
Docs
- Remove incorrect
m.server
example from readme by @turt2live in #257
Full Changelog: v0.99.5...v0.99.6
v0.99.5
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
Features:
- Every room JSON now has an
avatar
string which contains the MXC URI to use for that room. This is either them.room.avatar
or the opposingm.room.member
'savatar_url
for DM rooms.
Bugfixes:
- Fixed several panics.
- Malformed events no longer cause the entire state/timeline block to be dropped. Instead only the malformed event is dropped. This fixes an issue which could prevent room state from being kept in sync.
- Fixed an issue which could cause duplicate account data events.
- Fixed an issue where room snapshots were incorrectly made for invite rejections. This mostly just had a performance impact when a user then subsequently joined the room, as a room snapshot would be "rolled forward" rather than snapshotted once.
Improvements:
- Faster startup times by rearranging SQL queries.
- Reduce write pressure on the DB by periodically persisting since tokens.
- Add several new Prometheus metrics.
- Reduce spam protection interval to more rapidly resync clients when their connections are expired.
- Wait up to 1s for
unsigned.transaction_id
to come through on pollers before sending events to clients. Makes use of an "all clear" message to reduce the likelihood of waiting that 1s. Should for the most part completely address #3 - assuming the upstream HS lag is <1s. - Add more information to response summary log lines.
- Assign a single poller per room to track typing notifications. This will significantly increase the reliability of typing notifications, and reduce their associated payload frequency over pubsub.
What's Changed
- Use the rooms table initially when querying latest nids by @kegsay in #202
- Use a pinned EW version for e2e tests to unbreak them by @kegsay in #205
- bugfix: ensure metadata maps are always init'd by @kegsay in #204
- Increase timeout of init sync to 30mn for small homeservers by @MatMaul in #188
- Don't try to get data for empty room lists by @S7evinK in #206
- Debug missing roomIDs/event timestamps seen at startup by @DMRobertson in #178
- Improve startup times by @kegsay in #207
- Bump docker-setup-qemu-action to v2 by @DMRobertson in #210
- Give clients avatar URLs for rooms by @DMRobertson in #208
- Persist since token periodically by @S7evinK in #209
- Speed up startup even more by @kegsay in #213
- Add more metrics around connection buffers by @kegsay in #219
- Protect map against concurrent map r/w by @kegsay in #220
- Adjust spam intervals by @kegsay in #221
- bugfix: fix deadlock when connections expire due to full buffers by @kegsay in #222
- Handle malformed events more gracefully by @kegsay in #224
- Fix Nginx-example regex case-sensitivity. by @olmari in #226
- Add more logging to response lines by @kegsay in #233
- Ensure clients see their
transaction_id
s by @DMRobertson in #146 - Move PendingTxnIDs to the handler2.Handler by @DMRobertson in #236
- Do not make snapshots for lone leave events by @kegsay in #235
- Fix V2Typing send multiple times by @S7evinK in #214
- Suppress duplicate account data events by @kegsay in #237
New Contributors
Full Changelog: v0.99.4...v0.99.5
v0.99.4
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
Bugfixes:
- Return invited_count correctly when it transitions to 0.
- Fix a data corruption bug when 2 users join a federated room where the first user was invited to said room.
Improvements:
- Support for
SYNCV3_MAX_DB_CONN
to set the max DB connections to use. - Reduce the amount of concurrent DB connections required during normal operation.
- Add more metrics.
- Reduce log spam and add more useful logs.
- Improve performance when handling changed device lists.
- Responses will consume from the live buffer even when clients change their request parameters to more speedily send new events down.
New Contributors
- @TheSunCat made their first contribution in #195
Full Changelog: v0.99.3...v0.99.4
v0.99.3
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
Features:
- Initial support for devices using refreshing access tokens.
- Allow setting a log level using the
SYNCV3_LOG_LEVEL
environment variable (@networkException in #99). - Support for
conn_id
as per the MSC (#101). - Per-list bump event types as per the MSC (#129).
- Add rate limiting to incoming /sync requests. (#125)
Bugfixes:
- Fixes various crash scenarios.
- Fix clients seeing misordered timelines.
- Fix a bug where
required_state
would not cause new state to be sent to clients if it was updated as part of a room subscription.
Improvements:
- Improved sentry and profiling coverage.
- Various performance improvements, and to startup time (#122) in particular.
bump_event_types
now works for new sliding sync connections.
New Contributors
- @networkException made their first contribution in #99
- @bnjbvr made their first contribution in #100
- @anoadragon453 made their first contribution in #130
Full Changelog: v0.99.2...v0.99.3
v0.99.2
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
Features:
- Experimental support for
bump_event_types
: allow clients to specify a list of event types that constitute recent activity. (#34) - Implement listening on TLS/HTTPS, by @frebib. (#39)
- Support for opting in to extensions on a per-list and per-room basis. (#41)
- Sentry support. (#21)
Bugfixes:
- Fix missing messages after sending a short burst of many messages. (#56, #63)
- Fix dropping state events if the proxy misses them due to a large sync response. (#73, #71)
Improvements:
- Give clients exact SYNC and INVALIDATE ranges. (#58)
v0.99.1
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
Features:
- The client test rig now works with the latest API format.
- Added
SYNCV3_JAEGER_URL
to send spans to a Jaeger endpoint. This uses OTLP under the hood. This also looks for the Trace Context to enable full end-to-end client/server spans.
Bug fixes:
- Fixed numerous data races via
go test -race
. - Fixed an issue which could cause incorrect
DELETE
orINSERT
operations to be sent when using the sort optionsby_notification_level
,by_notification_count
,by_highlight_count
. - Fixed a bug which caused only the latest receipt in a room to be sent to the client if multiple receipts arrived in a live stream. They now get aggregated into a single EDU.
- Fixed a bug which caused only the latest typing update in a room to be sent to the client if multiple users started to type in a live stream. They now get aggregated into a single typing EDU.
- Fixed a bug which caused only the latest account data update in a room to be sent to the client if multiple global or same room events occurred in a live stream. They now get aggregated correctly.
- Fixed a bug where the server would return HTTP 500 when enabling extensions after the initial request i.e
pos >= 1
Improvements:
- Improved performance when sorting the room list by not taking copies of rooms when sorting.
v0.99.0
Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync
This version has breaking API changes with previous releases as it uses lists-as-keys not as-arrays.
Features:
- Uses lists-as-keys to match the latest version of MSC3575.
- Support "timeine trickling" whereby requests can increase the
timeline_limit
to pull in more events at a later point in time. - Support "required state trickling" whereby requests can request no
required_state
and then change to request more state at a later point in time.
Bug fixes:
- CRITICAL: fixed a bug which caused the proxy to forget all user memberships on startup. This meant no live traffic would be sent to connections.
- Unread count updates are now immediately sent to clients (regression)
- Atomically send unread count updates with the event that triggered the update.
Improvements:
- Requests which do not need any
required_state
will now run faster as no room state is pulled. Previously this would cause a full state lookup. - Improved the lookup time for
unsigned.transaction_id
on events. This speeds up requests which havetimeilne_limit
> 0. - Duplicate typing events are now suppressed in the sync2 handler.
- More useful
runtime/trace
logs have been added.