Synapse 1.54.0rc1 (2022-03-02)
Please note that this will be the last release of Synapse that is compatible with Mjolnir 1.3.1 and earlier.
Administrators of servers which have the Mjolnir module installed are advised to upgrade Mjolnir to version 1.3.2 or later.
Features
- Add support for MSC3202: sending one-time key counts and fallback key usage states to Application Services. (#11617)
- Improve the generated URL previews for some web pages. Contributed by @AndrewRyanChama. (#11985)
- Track cache invalidations in Prometheus metrics, as already happens for cache eviction based on size or time. (#12000)
- Implement experimental support for MSC3720 (account status endpoints). (#12001, #12067)
- Enable modules to set a custom display name when registering a user. (#12009)
- Advertise Matrix 1.1 and 1.2 support on
/_matrix/client/versions
. (#12020, (#12022) - Support only the stable identifier for MSC3069's
is_guest
on/_matrix/client/v3/account/whoami
. (#12021) - Use room version 9 as the default room version (per MSC3589). (#12058)
- Add module callbacks to react to user deactivation status changes (i.e. deactivations and reactivations) and profile updates. (#12062)
Bugfixes
- Fix a bug introduced in Synapse 1.48.0 where an edit of the latest event in a thread would not be properly applied to the thread summary. (#11992)
- Fix long-standing bug where the
get_rooms_for_user
cache was not correctly invalidated for remote users when the server left a room. (#11999) - Fix a 500 error with Postgres when looking backwards with the MSC3030
/timestamp_to_event?dir=b
endpoint. (#12024) - Properly fix a long-standing bug where wrong data could be inserted into the
event_search
table when using SQLite. This could block runningsynapse_port_db
with anargument of type 'int' is not iterable
error. This bug was partially fixed by a change in Synapse 1.44.0. (#12037) - Fix slow performance of
/logout
in some cases where refresh tokens are in use. The slowness existed since the initial implementation of refresh tokens in version 1.38.0. (#12056) - Fix a long-standing bug where Synapse would make additional failing requests over federation for missing data. (#12077)
- Fix occasional
Unhandled error in Deferred
error message. (#12089) - Fix a bug introduced in Synapse 1.51.0 where incoming federation transactions containing at least one EDU would be dropped if debug logging was enabled for
synapse.8631_debug
. (#12098) - Fix a long-standing bug which could cause push notifications to malfunction if
use_frozen_dicts
was set in the configuration. (#12100) - Fix an extremely rare, long-standing bug in
ReadWriteLock
that would cause an error when a newly unblocked writer completes instantly. (#12105) - Make a
POST
to/rooms/<room_id>/receipt/m.read/<event_id>
only trigger a push notification if the count of unread messages is different to the one in the last successfully sent push. This reduces server load and load on the receiving device. (#11835)
Updates to the Docker image
- The Docker image no longer automatically creates a temporary volume at
/data
. This is not expected to affect normal usage. (#11997) - Use Python 3.9 in Docker images by default. (#12112)
Improved Documentation
- Document support for the
to_device
,account_data
,receipts
, andpresence
stream writers for workers. (#11599) - Explain the meaning of spam checker callbacks' return values. (#12003)
- Clarify information about external Identity Provider IDs. (#12004)
Deprecations and Removals
- Deprecate using
synctl
with the config optionsynctl_cache_factor
and print a warning if a user still uses this option. (#11865) - Remove support for the legacy structured logging configuration (please see the the upgrade notes if you are using
structured: true
in the Synapse configuration). (#12008) - Drop support for MSC3283 unstable flags now that the stable flags are supported. (#12018)
- Remove the unstable
/spaces
endpoint from MSC2946. (#12073)
Internal Changes
- Make the
get_room_version
method useget_room_version_id
to benefit from caching. (#11808) - Remove unnecessary condition on knock -> leave auth rule check. (#11900)
- Add tests for device list changes between local users. (#11972)
- Optimise calculating
device_list
changes in/sync
. (#11974) - Add missing type hints to storage classes. (#11984)
- Refactor the search code for improved readability. (#11991)
- Move common deduplication code down into
_auth_and_persist_outliers
. (#11994) - Limit concurrent joins from applications services. (#11996)
- Preparation for faster-room-join work: when parsing the
send_join
response, get them.room.create
event fromstate
, notauth_chain
. (#12005, #12039) - Preparation for faster-room-join work: parse MSC3706 fields in send_join response. (#12011)
- Preparation for faster-room-join work: persist information on which events and rooms have partial state to the database. (#12012)
- Preparation for faster-room-join work: Support for calling
/federation/v1/state
on a remote server. (#12013) - Configure
tox
to usevenv
rather thanvirtualenv
. (#12015) - Fix bug in
StateFilter.return_expanded()
and add some tests. (#12016) - Use Matrix v1.1 endpoints (
/_matrix/client/v3/auth/...
) in fallback auth HTML forms. (#12019) - Update the
olddeps
CI job to use an old version ofmarkupsafe
. (#12025) - Upgrade Mypy to version 0.931. (#12030)
- Remove legacy
HomeServer.get_datastore()
. (#12031, #12070) - Minor typing fixes. (#12034, #12069)
- After joining a room, create a dedicated logcontext to process the queued events. (#12041)
- Tidy up GitHub Actions config which builds distributions for PyPI. (#12051)
- Move configuration out of
setup.cfg
. (#12052, #12059) - Fix error message when a worker process fails to talk to another worker process. (#12060)
- Fix using the
complement.sh
script without specifying a directory or a branch. Contributed by Nico on behalf of Famedly. (#12063) - Add type hints to
tests/rest/client
. (#12066, #12072, #12084, #12094) - Add some logging to
/sync
to try and track down #11916. (#12068) - Inspect application dependencies using
importlib.metadata
or its backport. (#12088) - Use
assertEqual
instead of the deprecatedassertEquals
in test code. (#12092) - Move experimental support for MSC3440 to
/versions
. (#12099) - Add
stop_cancellation
utility function to stopDeferred
s from being cancelled. (#12106) - Improve exception handling for concurrent execution. (#12109)
- Advertise support for Python 3.10 in packaging files. (#12111)
- Move CI checks out of tox, to facilitate a move to using poetry. (#12119)