Synapse v1.59.0.rc1 Release Notes

Release Date: 2022-05-10 // 7 days ago
  • 🚀 This release makes several changes that server administrators should be aware of:

    • 0️⃣ Device name lookup over federation is now disabled by default. (#12616)
    • 🗄 The synapse.app.appservice and synapse.app.user_dir worker application types are now deprecated. (#12452, #12654)

    ⬆️ See the upgrade notes for more details.

    ➕ Additionally, this release removes the non-standard m.login.jwt login type from Synapse. It can be replaced with org.matrix.login.jwt for identical behaviour. This is only used if jwt_config.enabled is set to true in the configuration. (#12597)

    🔋 Features

    • 👌 Support MSC3266 room summaries over federation. (#11507)
    • Implement changes to MSC2285 (hidden read receipts). Contributed by @SimonBrandner. (#12168, #12635, #12636, #12670)
    • Extend the module API to allow modules to change actions for existing push rules of local users. (#12406)
    • Add the notify_appservices_from_worker configuration option (superseding notify_appservices) to allow a generic worker to be designated as the worker to send traffic to Application Services. (#12452)
    • 👉 Add the update_user_directory_from_worker configuration option (superseding update_user_directory) to allow a generic worker to be designated as the worker to update the user directory. (#12654)
    • Add new enable_registration_token_3pid_bypass configuration option to allow registrations via token as an alternative to verifying a 3pid. (#12526)
    • 0️⃣ Implement MSC3786: Add a default push rule to ignore m.room.server_acl events. (#12601)
    • Add new mau_appservice_trial_days configuration option to specify a different trial period for users registered via an appservice. (#12619)

    🛠 Bugfixes

    • 🛠 Fix a bug introduced in Synapse 1.48.0 where the latest thread reply provided failed to include the proper bundled aggregations. (#12273)
    • 🛠 Fix a bug introduced in Synapse 1.22.0 where attempting to send a large amount of read receipts to an application service all at once would result in duplicate content and abnormally high memory usage. Contributed by Brad & Nick @ Beeper. (#12544)
    • 🛠 Fix a bug introduced in Synapse 1.57.0 which could cause Failed to calculate hosts in room errors to be logged for outbound federation. (#12570)
    • 🛠 Fix a long-standing bug where status codes would almost always get logged as 200!, irrespective of the actual status code, when clients disconnect before a request has finished processing. (#12580)
    • 🛠 Fix race when persisting an event and deleting a room that could lead to outbound federation breaking. (#12594)
    • 🛠 Fix a bug introduced in Synapse 1.53.0 where bundled aggregations for annotations/edits were incorrectly calculated. (#12633)
    • 🛠 Fix a long-standing bug where rooms containing power levels with string values could not be upgraded. (#12657)
    • Prevent memory leak from reoccurring when presence is disabled. (#12656)

    ⚡️ Updates to the Docker image

    • 🏗 Explicitly opt-in to using BuildKit-specific features in the Dockerfile. This fixes issues with building images in some GitLab CI environments. (#12541)
    • 📇 Update the "Build docker images" GitHub Actions workflow to use docker/metadata-action to generate docker image tags, instead of a custom shell script. Contributed by @henryclw. (#12573)

    👌 Improved Documentation

    • Update SQL statements and replace use of old table user_stats_historical in docs for Synapse Admins. (#12536)
    • ➕ Add missing linebreak to pipx install instructions. (#12579)
    • ➕ Add information about the TCP replication module to docs. (#12621)
    • 🛠 Fixes to the formatting of README.rst. (#12627)
    • 🛠 Fix docs on how to run specific Complement tests using the complement.sh test runner. (#12664)

    🗄 Deprecations and Removals

    • ✂ Remove unstable identifiers from MSC3069. (#12596)
    • ✂ Remove the unspecified m.login.jwt login type and the unstable uk.half-shot.msc2778.login.application_service from MSC2778. (#12597)
    • ✅ Synapse now requires at least Python 3.7.1 (up from 3.7.0), for compatibility with the latest Twisted trunk. (#12613)

    Internal Changes

    • 👉 Use supervisord to supervise Postgres and Caddy in the Complement image to reduce restart time. (#12480)
    • Immediately retry any requests that have backed off when a server comes back online. (#12500)
    • ✅ Use make_awaitable instead of defer.succeed for return values of mocks in tests. (#12505)
    • Consistently check if an object is a frozendict. (#12564)
    • Protect module callbacks with read semantics against cancellation. (#12568)
    • 👌 Improve comments and error messages around access tokens. (#12577)
    • 👌 Improve docstrings for the receipts store. (#12581)
    • ✅ Use constants for read-receipts in tests. (#12582)
    • 🌲 Log status code of cancelled requests as 499 and avoid logging stack traces for them. (#12587, #12663)
    • ✂ Remove special-case for twisted logger from default log config. (#12589)
    • 🗄 Use getClientAddress instead of the deprecated getClientIP. (#12599)
    • ➕ Add link to documentation in Grafana Dashboard. (#12602)
    • ⬇️ Reduce log spam when running multiple event persisters. (#12610)
    • ➕ Add extra debug logging to federation sender. (#12614)
    • 0️⃣ Prevent remote homeservers from requesting local user device names by default. (#12616)
    • ➕ Add a consistency check on events which we read from the database. (#12620)
    • ✂ Remove use of the constantly library and switch to enums for EventRedactBehaviour. Contributed by @andrewdoh. (#12624)
    • ✂ Remove unused code related to receipts. (#12632)
    • 👷 Minor improvements to the scripts for running Synapse in worker mode under Complement. (#12637)
    • 🚚 Move pympler back in to the all extras. (#12652)
    • 🛠 Fix spelling of M_UNRECOGNIZED in comments. (#12665)
    • 🚀 Release script: confirm the commit to be tagged before tagging. (#12556)
    • 🛠 Fix a typo in the announcement text generated by the Synapse release development script. (#12612)

    Typechecking

    • 🛠 Fix scripts-dev to pass typechecking. (#12356)
    • ➕ Add some type hints to datastore. (#12485)
    • ✂ Remove unused # type: ignores. (#12531)
    • 👍 Allow unused # type: ignore comments in bleeding edge CI jobs. (#12576)
    • ✂ Remove redundant lines of config from mypy.ini. (#12608)
    • ⚡️ Update to mypy 0.950. (#12650)
    • Use Concatenate to better annotate _do_execute. (#12666)
    • 👉 Use ParamSpec to refine type hints. (#12667)
    • 🛠 Fix mypy against latest pillow stubs. (#12671)

    Synapse 1.58.1 (2022-05-05)

    🚀 This patch release includes a fix to the Debian packages, installing the 📦 systemd and cache_memory extra package groups, which were incorrectly omitted in v1.58.0. This primarily prevented Synapse from starting 🔧 when the systemd.journal.JournalHandler log handler was configured. 👀 See #12631 for further information.

    Otherwise, no significant changes since 1.58.0.

    Synapse 1.58.0 (2022-05-03)

    🚀 As of this release, the groups/communities feature in Synapse is now disabled by default. See #11584 for details. As mentioned in the upgrade notes, this feature will be removed in Synapse 1.61.

    No significant changes since 1.58.0rc2.


Previous changes from v1.58.0.rc2

  • 🚀 This release candidate fixes bugs related to Synapse 1.58.0rc1's logic for handling device list updates.

    🛠 Bugfixes

    • 🛠 Fix a bug introduced in Synapse 1.58.0rc1 where the main process could consume excessive amounts of CPU and memory while handling sentry logging failures. (#12554)
    • 🛠 Fix a bug introduced in Synapse 1.58.0rc1 where opentracing contexts were not correctly sent to whitelisted remote servers with device lists updates. (#12555)

    Internal Changes

    • ⚡️ Reduce unnecessary work when handling remote device list updates. (#12557)