Skip to content

Releases: matrix-org/sliding-sync

v0.99.9

06 Sep 15:56
Compare
Choose a tag to compare

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

01 Sep 09:06
Compare
Choose a tag to compare

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

24 Aug 11:49
Compare
Choose a tag to compare

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

23 Aug 10:18
096e47a
Compare
Choose a tag to compare

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

Full Changelog: v0.99.5...v0.99.6

v0.99.5

02 Aug 16:42
Compare
Choose a tag to compare

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 the m.room.avatar or the opposing m.room.member's avatar_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_ids 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

12 Jul 17:25
Compare
Choose a tag to compare

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

Full Changelog: v0.99.3...v0.99.4

v0.99.3

19 Jun 14:30
Compare
Choose a tag to compare

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

Full Changelog: v0.99.2...v0.99.3

v0.99.2

27 Apr 11:01
Compare
Choose a tag to compare

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

24 Feb 09:05
Compare
Choose a tag to compare

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 or INSERT operations to be sent when using the sort options by_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

01 Feb 12:29
Compare
Choose a tag to compare

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 have timeilne_limit > 0.
  • Duplicate typing events are now suppressed in the sync2 handler.
  • More useful runtime/trace logs have been added.