Synapse 1.18.0 (2020-07-30)
Deprecation Warnings
From 10th August 2020, we will no longer publish Docker images with the -py3
tag suffix. The images tagged with the -py3
suffix have been identical to the non-suffixed tags since release 0.99.0, and the suffix is obsolete.
On 10th August, we will remove the latest-py3
tag. Existing per-release tags (such as v1.18.0-py3
) will not be removed, but no new -py3
tags will be added.
Scripts relying on the -py3
suffix will need to be updated.
When setting up worker processes, we now recommend the use of a Redis server for replication. The old direct TCP connection method is deprecated and will be removed in a future release. See docs/workers.md for more details.
Improved Documentation
- Update worker docs with latest enhancements. (#7969)
Synapse 1.18.0rc2 (2020-07-28)
Bugfixes
- Fix an
AssertionError
exception introduced in v1.18.0rc1. (#7876) - Fix experimental support for moving typing off master when worker is restarted, which is broken in v1.18.0rc1. (#7967)
Internal Changes
- Further optimise queueing of inbound replication commands. (#7876)
Synapse 1.18.0rc1 (2020-07-27)
Features
- Include room states on invite events that are sent to application services. Contributed by @Sorunome. (#6455)
- Add delete room admin endpoint (
POST /_synapse/admin/v1/rooms/<room_id>/delete
). Contributed by @dklimpel. (#7613, #7953) - Add experimental support for running multiple federation sender processes. (#7798)
- Add the option to validate the
iss
andaud
claims for JWT logins. (#7827) - Add support for handling registration requests across multiple client reader workers. (#7830)
- Add an admin API to list the users in a room. Contributed by Awesome Technologies Innovationslabor GmbH. (#7842)
- Allow email subjects to be customised through Synapse's configuration. (#7846)
- Add the ability to re-activate an account from the admin API. (#7847, #7908)
- Add experimental support for running multiple pusher workers. (#7855)
- Add experimental support for moving typing off master. (#7869, #7959)
- Report CPU metrics to prometheus for time spent processing replication commands. (#7879)
- Support oEmbed for media previews. (#7920)
- Abort federation requests where the client disconnects before the ratelimiter expires. (#7930)
- Cache responses to
/_matrix/federation/v1/state_ids
to reduce duplicated work. (#7931)
Bugfixes
- Fix detection of out of sync remote device lists when receiving events from remote users. (#7815)
- Fix bug where Synapse fails to process an incoming event over federation if the server is missing too much of the event's auth chain. (#7817)
- Fix a bug causing Synapse to misinterpret the value
off
forencryption_enabled_by_default_for_room_type
in its configuration file(s) if that value isn't surrounded by quotes. This bug was introduced in v1.16.0. (#7822) - Fix bug where we did not always pass in
app_name
orserver_name
to email templates, including e.g. for registration emails. (#7829) - Errors which occur while using the non-standard JWT login now return the proper error:
403 Forbidden
with an error code ofM_FORBIDDEN
. (#7844) - Fix "AttributeError: 'str' object has no attribute 'get'" error message when applying per-room message retention policies. The bug was introduced in Synapse 1.7.0. (#7850)
- Fix a bug introduced in Synapse 1.10.0 which could cause a "no create event in auth events" error during room creation. (#7854)
- Fix a bug which allowed empty rooms to be rejoined over federation. (#7859)
- Fix 'Unable to find a suitable guest user ID' error when using multiple client_reader workers. (#7866)
- Fix a long standing bug where the tracing of async functions with opentracing was broken. (#7872, #7961)
- Fix "TypeError in
synapse.notifier
" exceptions. (#7880) - Fix deprecation warning due to invalid escape sequences. (#7895)
Updates to the Docker image
- Base docker image on Debian Buster rather than Alpine Linux. Contributed by @maquis196. (#7839)
Improved Documentation
- Provide instructions on using
register_new_matrix_user
via docker. (#7885) - Change the sample config postgres user section to use
synapse_user
instead ofsynapse
to align with the documentation. (#7889) - Reorder database paragraphs to promote postgres over sqlite. (#7933)
- Update the dates of ACME v1's end of life in
ACME.md
. (#7934)
Deprecations and Removals
- Remove unused
synapse_replication_tcp_resource_invalidate_cache
prometheus metric. (#7878) - Remove Ubuntu Eoan from the list of
.deb
packages that we build as it is now end-of-life. Contributed by @gary-kim. (#7888)
Internal Changes
- Switch parts of the codebase from
simplejson
to the standard libraryjson
. (#7802) - Add type hints to the http server code and remove an unused parameter. (#7813)
- Add type hints to synapse.api.errors module. (#7820)
- Ensure that calls to
json.dumps
are compatible with the standard library json. (#7836) - Remove redundant
retry_on_integrity_error
wrapper for event persistence code. (#7848) - Consistently use
db_to_json
to convert from database values to JSON objects. (#7849) - Convert various parts of the codebase to async/await. (#7851, #7860, #7868, #7871, #7873, #7874, #7884, #7912, #7935, #7939, #7942, #7944)
- Add support for handling registration requests across multiple client reader workers. (#7853)
- Small performance improvement in typing processing. (#7856)
- The default value of
filter_timeline_limit
was changed from -1 (no limit) to 100. (#7858) - Optimise queueing of inbound replication commands. (#7861)
- Add some type annotations to
HomeServer
andBaseHandler
. (#7870) - Clean up
PreserveLoggingContext
. (#7877) - Change "unknown room version" logging from 'error' to 'warning'. (#7881)
- Stop using
device_max_stream_id
table and just usedevice_inbox.stream_id
. (#7882) - Return an empty body for OPTIONS requests. (#7886)
- Fix typo in generated config file. Contributed by @ThiefMaster. (#7890)
- Import ABC from
collections.abc
for Python 3.10 compatibility. (#7892) - Remove unused functions
time_function
,trace_function
,get_previous_frames
andget_previous_frame
fromsynapse.logging.utils
module. (#7897) - Lint the
contrib/
directory in CI and linting scripts, addsynctl
to the linting script for consistency with CI. (#7914) - Use Element CSS and logo in notification emails when app name is Element. (#7919)
- Optimisation to /sync handling: skip serializing the response if the client has already disconnected. (#7927)
- When a client disconnects, don't log it as 'Error processing request'. (#7928)
- Add debugging to
/sync
response generation (disabled by default). (#7929) - Update comments that refer to Deferreds for async functions. (#7945)
- Simplify error handling in federation handler. (#7950)