Skip to content

v0.99.11

Compare
Choose a tag to compare
@github-actions github-actions released this 11 Oct 15:35
· 213 commits to main since this release

Docker images available at: https://github.com/matrix-org/sliding-sync/pkgs/container/sliding-sync

Features

  • Add optional SYNCV3_DB_IDLE_TIMEOUT_SECS. On shared infrastructure where database connections are at a premium, a low idle timeout can be used to reap connections rapidly. On dedicated infrastructure where the database is just used for sliding sync, a high idle timeout can slightly improve performance when communicating with the database.
  • Room heroes can now be requested by specifying include_heroes: true. See MSC3575 for precise notation.
  • Add optional SYNCV3_HTTP_TIMEOUT_SECS and associated SYNCV3_HTTP_INITIAL_TIMEOUT_SECS, which configures the timeouts for sync v2 pollers. A high timeout is essential for large accounts, where initial sync v2 requests may take 10s of minutes. A lower timeout can be beneficial when network connectivity is interrupted. Having a large timeout (e.g 30min) may mean it can take up to 30 minutes for the proxy to realise that a sync v2 request has failed, during which time the device has not received any data. The proxy defaults to 30 minutes initial and 5 minutes otherwise. If network connectivity between the proxy and upstream homeserver is particularly poor, you may want to lower SYNCV3_HTTP_TIMEOUT_SECS.

Bug fixes

  • An issue where leave events could be received multiple times has been fixed.
  • Redactions now invalidate calculated data e.g redacting a room name automatically resends room.name with the new calculated name.
  • Fixed an issue when used with OIDC servers which could cause short-lived tokens to not start a poller, due to caching failures.
  • Fixed an issue whereby a bad state block could permanently stop a device poller from making forward progress.
  • When the proxy receives a limited sync, the timelines returned to sliding sync clients are now bounded by this value. This ensures that the client can fetch the missed events, and that the client doesn't "skip over" the events, which presents as a chunk of missing messages.
  • Stop pollers if the access token keeps returning errors for at least 50 minutes. Retrying forever just adds noise and load to the pollers.

Improvements

  • Sync v2 requests no longer request changes to presence. This should reduce load on the upstream homeserver.
  • If SYNCV3_SERVER cannot be reached at startup, log a warning. This should help to reduce configuration errors.
  • Removed temporary state block metrics. This could adversely affect /metrics collectors when under heavy load, due to it being a high cardinality metric. This could cause /metrics responses to be extremly large, enough to cause the collector to refuse to process the response, causing gaps in metrics collection.

What's Changed

  • Filter out presence events from /sync requests by @S7evinK in #292
  • Fix duplicate leave events by @S7evinK in #297
  • Better propagate request context by @sandhose in #301
  • Invalidate the global cache after a redaction by @DMRobertson in #296
  • bugfix: ensure that we always call EnsurePolling for expired tokens by @kegsay in #302
  • Add SYNCV3_DB_IDLE_TIMEOUT_SECS by @kegsay in #303
  • Remove per-device token migration added in #89 by @DMRobertson in #309
  • Add posibility to request room heroes by @S7evinK in #304
  • Make HTTP timeout configurable by @S7evinK in #308
  • bugfix: don't wedge pollers when they get bad state blocks by @kegsay in #299
  • Don't load events when there's a gap between known events by @DMRobertson in #300
  • Reduce mutex contention on callbacks by @kegsay in #311
  • Log a warning if the homeserver is unreachable at startup by @DMRobertson in #314
  • Update the poller metrics after a poller was started by @S7evinK in #312
  • Return a dummy /versions response in tests by @DMRobertson in #316
  • Disable constantly failing cypress tests by @DMRobertson in #317
  • Remove temporary metric by @kegsay in #322
  • Remove RequestedLatestEvents field from UserRoomData by @DMRobertson in #324
  • bugfix: give up polling if the /sync response keeps erroring for >50min by @kegsay in #326
  • Fix race condition in test by @kegsay in #337
  • bugfix: actually use the provided mock value in tests by @kegsay in #338
  • Build and attach {amd,arm}64 binaries to releases by @DMRobertson in #339

New Contributors

Full Changelog: v0.99.10...v0.99.11