Releases

144 posts tagged with "Releases" (See all Category)

Atom Feed

Synapse 1.3.1 released

17.08.2019 00:00 — Releases Neil Johnson

Some of you will have been bitten by a bug that prevented Synapse 1.3.0 from starting up correctly. If this is you, please upgrade.

Additionally we have taken the opportunity to fix a dependency bug for our intrepid packagers.

Apologies for the inconvenience.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Also, check out our Synapse installation guide page

The changelog since 1.3.0 follows:

Synapse 1.3.1 (2019-08-17)

Features

  • Drop hard dependency on sdnotify python package. (#5871)

Bugfixes

  • Fix startup issue (hang on ACME provisioning) due to ordering of Twisted reactor startup. Thanks to @chrismoos for supplying the fix. (#5867)

Synapse 1.3.0 released

15.08.2019 00:00 — Releases Neil Johnson

Well now, Synapse 1.3.0 is here.

The main thing to know about 1.3.0 is that is contains performance improvements to reduce disk I/O and reduce RAM usage. We’ve been running it on matrix.org for a week or so and are really pleased with the results.

Check out our message send heat map.

Message Send

Other than that there are a bunch of bug fixes and tweaks to generally make things run more smoothly.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Also, check out our Synapse installation guide page

The changelog since 1.2.1 follows:

Synapse 1.3.0 (2019-08-15)

Bugfixes

  • Fix 500 Internal Server Error on publicRooms when the public room list was cached. (#5851)

Synapse 1.3.0rc1 (2019-08-13)

Features

  • Use M_USER_DEACTIVATED instead of M_UNKNOWN for errcode when a deactivated user attempts to login. (#5686)
  • Add sd_notify hooks to ease systemd integration and allows usage of Type=Notify. (#5732)
  • Synapse will no longer serve any media repo admin endpoints when enable_media_repo is set to False in the configuration. If a media repo worker is used, the admin APIs relating to the media repo will be served from it instead. (#5754, #5848)
  • Synapse can now be configured to not join remote rooms of a given "complexity" (currently, state events) over federation. This option can be used to prevent adverse performance on resource-constrained homeservers. (#5783)
  • Allow defining HTML templates to serve the user on account renewal attempt when using the account validity feature. (#5807)

Bugfixes

  • Fix UISIs during homeserver outage. (#5693, #5789)
  • Fix stack overflow in server key lookup code. (#5724)
  • start.sh no longer uses deprecated cli option. (#5725)
  • Log when we receive an event receipt from an unexpected origin. (#5743)
  • Fix debian packaging scripts to correctly build sid packages. (#5775)
  • Correctly handle redactions of redactions. (#5788)
  • Return 404 instead of 403 when accessing /rooms/{roomId}/event/{eventId} for an event without the appropriate permissions. (#5798)
  • Fix check that tombstone is a state event in push rules. (#5804)
  • Fix error when trying to login as a deactivated user when using a worker to handle login. (#5806)
  • Fix bug where user /sync stream could get wedged in rare circumstances. (#5825)
  • The purge_remote_media.sh script was fixed. (#5839)

Deprecations and Removals

  • Synapse now no longer accepts the -v/--verbose, -f/--log-file, or --log-config command line flags, and removes the deprecated verbose and log_file configuration file options. Users of these options should migrate their options into the dedicated log configuration. (#5678, #5729)
  • Remove non-functional 'expire_access_token' setting. (#5782)

Internal Changes

  • Make Jaeger fully configurable. (#5694)
  • Add precautionary measures to prevent future abuse of window.opener in default welcome page. (#5695)
  • Reduce database IO usage by optimising queries for current membership. (#5706, #5738, #5746, #5752, #5770, #5774, #5792, #5793)
  • Improve caching when fetching get_filtered_current_state_ids. (#5713)
  • Don't accept opentracing data from clients. (#5715)
  • Speed up PostgreSQL unit tests in CI. (#5717)
  • Update the coding style document. (#5719)
  • Improve database query performance when recording retry intervals for remote hosts. (#5720)
  • Add a set of opentracing utils. (#5722)
  • Cache result of get_version_string to reduce overhead of /version federation requests. (#5730)
  • Return 'user_type' in admin API user endpoints results. (#5731)
  • Don't package the sytest test blacklist file. (#5733)
  • Replace uses of returnValue with plain return, as returnValue is not needed on Python 3. (#5736)
  • Blacklist some flakey tests in worker mode. (#5740)
  • Fix some error cases in the caching layer. (#5749)
  • Add a prometheus metric for pending cache lookups. (#5750)
  • Stop trying to fetch events with event_id=None. (#5753)
  • Convert RedactionTestCase to modern test style. (#5768)
  • Allow looping calls to be given arguments. (#5780)
  • Set the logs emitted when checking typing and presence timeouts to DEBUG level, not INFO. (#5785)
  • Remove DelayedCall debugging from the test suite, as it is no longer required in the vast majority of Synapse's tests. (#5787)
  • Remove some spurious exceptions from the logs where we failed to talk to a remote server. (#5790)
  • Improve performance when making .well-known requests by sharing the SSL options between requests. (#5794)
  • Disable codecov GitHub comments on PRs. (#5796)
  • Don't allow clients to send tombstone events that reference the room it's sent in. (#5801)
  • Deny redactions of events sent in a different room. (#5802)
  • Deny sending well known state types as non-state events. (#5805)
  • Handle incorrectly encoded query params correctly by returning a 400. (#5808)
  • Handle pusher being deleted during processing rather than logging an exception. (#5809)
  • Return 502 not 500 when failing to reach any remote server. (#5810)
  • Reduce global pauses in the events stream caused by expensive state resolution during persistence. (#5826)
  • Add a lower bound to well-known lookup cache time to avoid repeated lookups. (#5836)
  • Whitelist history visibility sytests in worker mode tests. (#5843)

Critical Security Update - Synapse 1.2.1 released

26.07.2019 00:00 — Releases Neil Johnson

Today we release Synapse 1.2.1 as a critical security update. It contains patches relating to redactions and event federation. The patches address long standing bugs, and are not regressions specific to the previous version (1.2). All admins, regardless of current version, should upgrade asap.

This release includes four security fixes:

  • Prevent an attack where a federated server could send redactions for arbitrary events in v1 and v2 rooms. (#5767)
  • Prevent a denial-of-service attack where cycles of redaction events would make Synapse spin infinitely. Thanks to @lrizika:matrix.org for identifying and responsibly disclosing this issue. (0f2ecb961)
  • Prevent an attack where users could be joined or parted from public rooms without their consent. Thanks to Dylanger for identifying and responsibly disclosing this issue. (#5744)
  • Fix a vulnerability where a federated server could spoof read-receipts from users on other servers. Thanks to Dylanger for identifying this issue too. (#5743)

Additionally, the following fix was in Synapse 1.2.0, but was not correctly identified during the original release:

  • It was possible for a room moderator to send a redaction for an m.room.create event, which would downgrade the room to version 1. Thanks to @/dev/ponies:ponies.im for identifying and responsibly disclosing this issue! (#5701)

You can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Alternatively check out our Synapse installation guide page

Thanks for bearing with us.

Synapse 1.2.0 released

25.07.2019 00:00 — Releases Neil Johnson

Hey hey, Synapse 1.2.0 is here. It contains aggregations support, better error handling for deactivated accounts and some important bug fixes for redacting messages. Special thanks to community members skalarproduktraum and Lrizika for submissions to improve our documentation.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our Synapse installation guide page

The changelog since 1.1.0 follows:

Synapse 1.2.0 (2019-07-25)

No significant changes.

Synapse 1.2.0rc2 (2019-07-24)

Bugfixes

  • Fix a regression introduced in v1.2.0rc1 which led to incorrect labels on some prometheus metrics. (#5734)

Synapse 1.2.0rc1 (2019-07-22)

Features

  • Add support for opentracing. (#5544, #5712)
  • Add ability to pull all locally stored events out of synapse that a particular user can see. (#5589)
  • Add a basic admin command app to allow server operators to run Synapse admin commands separately from the main production instance. (#5597)
  • Add sender and origin_server_ts fields to m.replace. (#5613)
  • Add default push rule to ignore reactions. (#5623)
  • Include the original event when asking for its relations. (#5626)
  • Implement session_lifetime configuration option, after which access tokens will expire. (#5660)
  • Return "This account has been deactivated" when a deactivated user tries to login. (#5674)
  • Enable aggregations support by default (#5714)

Bugfixes

  • Fix 'utime went backwards' errors on daemonization. (#5609)
  • Various minor fixes to the federation request rate limiter. (#5621)
  • Forbid viewing relations on an event once it has been redacted. (#5629)
  • Fix requests to the /store_invite endpoint of identity servers being sent in the wrong format. (#5638)
  • Fix newly-registered users not being able to lookup their own profile without joining a room. (#5644)
  • Fix bug in #5626 that prevented the original_event field from actually having the contents of the original event in a call to /relations. (#5654)
  • Fix 3PID bind requests being sent to identity servers as application/x-form-www-urlencoded data, which is deprecated. (#5658)
  • Fix some problems with authenticating redactions in recent room versions. (#5699, #5700, #5707)
  • Ignore redactions of m.room.create events. (#5701)

Updates to the Docker image

  • Base Docker image on a newer Alpine Linux version (3.8 -> 3.10). (#5619)
  • Add missing space in default logging file format generated by the Docker image. (#5620)

Improved Documentation

  • Add information about nginx normalisation to reverse_proxy.rst. Contributed by @skalarproduktraum - thanks! (#5397)
  • --no-pep517 should be --no-use-pep517 in the documentation to setup the development environment. (#5651)
  • Improvements to Postgres setup instructions. Contributed by @Lrizika - thanks! (#5661)
  • Minor tweaks to postgres documentation. (#5675)

Deprecations and Removals

  • Remove support for the invite_3pid_guest configuration setting. (#5625)

Internal Changes

  • Move logging code out of synapse.util and into synapse.logging. (#5606, #5617)
  • Add a blacklist file to the repo to blacklist certain sytests from failing CI. (#5611)
  • Make runtime errors surrounding password reset emails much clearer. (#5616)
  • Remove dead code for persiting outgoing federation transactions. (#5622)
  • Add lint.sh to the scripts-dev folder which will run all linting steps required by CI. (#5627)
  • Move RegistrationHandler.get_or_create_user to test code. (#5628)
  • Add some more common python virtual-environment paths to the black exclusion list. (#5630)
  • Some counter metrics exposed over Prometheus have been renamed, with the old names preserved for backwards compatibility and deprecated. See docs/metrics-howto.rst for details. (#5636)
  • Unblacklist some user_directory sytests. (#5637)
  • Factor out some redundant code in the login implementation. (#5639)
  • Update ModuleApi to avoid register(generate_token=True). (#5640)
  • Remove access-token support from RegistrationHandler.register, and rename it. (#5641)
  • Remove access-token support from RegistrationStore.register, and rename it. (#5642)
  • Improve logging for auto-join when a new user is created. (#5643)
  • Remove unused and unnecessary check for FederationDeniedError in _exception_to_failure. (#5645)
  • Fix a small typo in a code comment. (#5655)
  • Clean up exception handling around client access tokens. (#5656)
  • Add a mechanism for per-test homeserver configuration in the unit tests. (#5657)
  • Inline issue_access_token. (#5659)
  • Update the sytest BuildKite configuration to checkout Synapse in /src. (#5664)
  • Add a docker type to the towncrier configuration. (#5673)
  • Convert synapse.federation.transport.server to async. Might improve some stack traces. (#5689)
  • Documentation for opentracing. (#5703)

Synapse 1.1.0 released

04.07.2019 00:00 — Releases Neil Johnson

Right folks, this is our first post 1.0 release, which means that we have now officially dropped support for Python 2 and Postgres 9.4. This means that we can start making use of Python 3 specific features and you should expect lots of associated performance wins over the coming months. See the upgrade notes for more.

Synapse 1.1.0 also contains a reworked approach to the Docker image, as well lots of performance improvements with special focus on DB IO - expect more to come in this area.

Special thanks to community member Alexander Trost for rounding out our SAML support and also to Daniel Hoffend for contributing the ability to disable local password authentication.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our Synapse installation guide page

The changelog since 1.0.0 follows:

Synapse 1.1.0 (2019-07-04)

As of v1.1.0, Synapse no longer supports Python 2, nor Postgres version 9.4. See the upgrade notes for more details.

This release also deprecates the use of environment variables to configure the docker image. See the docker README for more details.

No changes since 1.1.0rc2.

Synapse 1.1.0rc2 (2019-07-03)

Bugfixes

  • Fix regression in 1.1rc1 where OPTIONS requests to the media repo would fail. (#5593)
  • Removed the SYNAPSE_SMTP_* docker container environment variables. Using these environment variables prevented the docker container from starting in Synapse v1.0, even though they didn't actually allow any functionality anyway. (#5596)
  • Fix a number of "Starting txn from sentinel context" warnings. (#5605)

Internal Changes

  • Update github templates. (#5552)

Synapse 1.1.0rc1 (2019-07-02)

As of v1.1.0, Synapse no longer supports Python 2, nor Postgres version 9.4. See the upgrade notes for more details.

Features

  • Added possibility to disable local password authentication. Contributed by Daniel Hoffend. (#5092)
  • Add monthly active users to phonehome stats. (#5252)
  • Allow expired user to trigger renewal email sending manually. (#5363)
  • Statistics on forward extremities per room are now exposed via Prometheus. (#5384, #5458, #5461)
  • Add --no-daemonize option to run synapse in the foreground, per issue #4130. Contributed by Soham Gumaste. (#5412, #5587)
  • Fully support SAML2 authentication. Contributed by Alexander Trost - thank you! (#5422)
  • Allow server admins to define implementations of extra rules for allowing or denying incoming events. (#5440, #5474, #5477)
  • Add support for handling pagination APIs on client reader worker. (#5505, #5513, #5531)
  • Improve help and cmdline option names for --generate-config options. (#5512)
  • Allow configuration of the path used for ACME account keys. (#5516, #5521, #5522)
  • Add --data-dir and --open-private-ports options. (#5524)
  • Split public rooms directory auth config in two settings, in order to manage client auth independently from the federation part of it. Obsoletes the "restrict_public_rooms_to_local_users" configuration setting. If "restrict_public_rooms_to_local_users" is set in the config, Synapse will act as if both new options are enabled, i.e. require authentication through the client API and deny federation requests. (#5534)
  • The minimum TLS version used for outgoing federation requests can now be set with federation_client_minimum_tls_version. (#5550)
  • Optimise devices changed query to not pull unnecessary rows from the database, reducing database load. (#5559)
  • Add new metrics for number of forward extremities being persisted and number of state groups involved in resolution. (#5476)

Bugfixes

  • Fix bug processing incoming events over federation if call to /get_missing_events fails. (#5042)
  • Prevent more than one room upgrade happening simultaneously on the same room. (#5051)
  • Fix a bug where running synapse_port_db would cause the account validity feature to fail because it didn't set the type of the email_sent column to boolean. (#5325)
  • Warn about disabling email-based password resets when a reset occurs, and remove warning when someone attempts a phone-based reset. (#5387)
  • Fix email notifications for unnamed rooms with multiple people. (#5388)
  • Fix exceptions in federation reader worker caused by attempting to renew attestations, which should only happen on master worker. (#5389)
  • Fix handling of failures fetching remote content to not log failures as exceptions. (#5390)
  • Fix a bug where deactivated users could receive renewal emails if the account validity feature is on. (#5394)
  • Fix missing invite state after exchanging 3PID invites over federaton. (#5464)
  • Fix intermittent exceptions on Apple hardware. Also fix bug that caused database activity times to be under-reported in log lines. (#5498)
  • Fix logging error when a tampered event is detected. (#5500)
  • Fix bug where clients could tight loop calling /sync for a period. (#5507)
  • Fix bug with jinja2 preventing Synapse from starting. Users who had this problem should now simply need to run pip install matrix-synapse. (#5514)
  • Fix a regression where homeservers on private IP addresses were incorrectly blacklisted. (#5523)
  • Fixed m.login.jwt using unregistered user_id and added pyjwt>=1.6.4 as jwt conditional dependencies. Contributed by Pau Rodriguez-Estivill. (#5555, #5586)
  • Fix a bug that would cause invited users to receive several emails for a single 3PID invite in case the inviter is rate limited. (#5576)

Updates to the Docker image

  • Add ability to change Docker containers timezone with the TZ variable. (#5383)
  • Update docker image to use Python 3.7. (#5546)
  • Deprecate the use of environment variables for configuration, and make the use of a static configuration the default. (#5561, #5562, #5566, #5567)
  • Increase default log level for docker image to INFO. It can still be changed by editing the generated log.config file. (#5547)
  • Send synapse logs to the docker logging system, by default. (#5565)
  • Open the non-TLS port by default. (#5568)
  • Fix failure to start under docker with SAML support enabled. (#5490)
  • Use a sensible location for data files when generating a config file. (#5563)

Deprecations and Removals

  • Python 2.7 is no longer a supported platform. Synapse now requires Python 3.5+ to run. (#5425)
  • PostgreSQL 9.4 is no longer supported. Synapse requires Postgres 9.5+ or above for Postgres support. (#5448)
  • Remove support for cpu_affinity setting. (#5525)

Improved Documentation

  • Improve README section on performance troubleshooting. (#4276)
  • Add information about how to install and run black on the codebase to code_style.rst. (#5537)
  • Improve install docs on choosing server_name. (#5558)

Internal Changes

  • Add logging to 3pid invite signature verification. (#5015)
  • Update example haproxy config to a more compatible setup. (#5313)
  • Track deactivated accounts in the database. (#5378, #5465, #5493)
  • Clean up code for sending federation EDUs. (#5381)
  • Add a sponsor button to the repo. (#5382, #5386)
  • Don't log non-200 responses from federation queries as exceptions. (#5383)
  • Update Python syntax in contrib/ to Python 3. (#5446)
  • Update federation_client dev script to support .well-known and work with python3. (#5447)
  • SyTest has been moved to Buildkite. (#5459)
  • Demo script now uses python3. (#5460)
  • Synapse can now handle RestServlets that return coroutines. (#5475, #5585)
  • The demo servers talk to each other again. (#5478)
  • Add an EXPERIMENTAL config option to try and periodically clean up extremities by sending dummy events. (#5480)
  • Synapse's codebase is now formatted by black. (#5482)
  • Some cleanups and sanity-checking in the CPU and database metrics. (#5499)
  • Improve email notification logging. (#5502)
  • Fix "Unexpected entry in 'full_schemas'" log warning. (#5509)
  • Improve logging when generating config files. (#5510)
  • Refactor and clean up Config parser for maintainability. (#5511)
  • Make the config clearer in that email.template_dir is relative to the Synapse's root directory, not the synapse/ folder within it. (#5543)
  • Update v1.0.0 release changelog to include more information about changes to password resets. (#5545)
  • Remove non-functioning check_event_hash.py dev script. (#5548)
  • Synapse will now only allow TLS v1.2 connections when serving federation, if it terminates TLS. As Synapse's allowed ciphers were only able to be used in TLSv1.2 before, this does not change behaviour. (#5550)
  • Logging when running GC collection on generation 0 is now at the DEBUG level, not INFO. (#5557)
  • Reduce the amount of stuff we send in the docker context. (#5564)
  • Point the reverse links in the Purge History contrib scripts at the intended location. (#5570)

Synapse 1.0.0 released

11.06.2019 00:00 — General Neil Johnson

Well here it is: Synapse 1.0.

Synapse 1.0 is the reference implementation of the Matrix 1.0 spec. The goal of the release overall has been to focus on security and stability, such that we can officially declare Synapse (and Matrix) out of beta and recommended for production use. This means changing the default room protocol version used for new rooms to be v4, which includes the new state resolution algorithm, as well as collision-resistant event IDs, which are now formatted to be URL safe.

Synapse 1.0 also ships with support for the upcoming v5 room protocol (which enforces honouring server key validity periods), but this will not be used as the default for new rooms until a sufficient number of servers support it.

Please note that Synapse 1.0 does not include significant performance work or new features - our focus has been almost exclusively on providing a reference implementation of the Matrix 1.0 protocol. But having cleared our backlog on security/stability issues we will finally be now unblocked to pursue work around reducing RAM footprint, eliminating forward-extremity build up, and shipping new features like Edits, Reactions & E2E cross-signing support.

As part of the security work, Synapse 1.0 contains a breaking change that requires a valid TLS certificate on the federation API endpoint. Servers that do not configure their certificate will no longer be able to federate post 1.0.

It is also worth noting that Synapse 1.0.0 is the last release that will support Python 2.x and Postgres 9.4. For more information see here but the TL;DR is that you should upgrade asap.

This release has been a long time coming. Many thanks indeed to everyone who helped test the release candidates and provided feedback along the way.

Synapse 1.0 is just one component of a larger Matrix 1.0 release, which you can read all about here.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our Synapse installation guide page

The changelog since 0.99.5 follows:

Synapse 1.0.0 (2019-06-11)

Bugfixes

  • Fix bug where attempting to send transactions with large number of EDUs can fail. (#5418)

Improved Documentation

  • Expand the federation guide to include relevant content from the MSC1711 FAQ (#5419)

Internal Changes

  • Move password reset links to /_matrix/client/unstable namespace. (#5424)

Synapse 1.0.0rc3 (2019-06-10)

Security: Fix authentication bug introduced in 1.0.0rc1. Please upgrade to rc3 immediately

Synapse 1.0.0rc2 (2019-06-10)

Bugfixes

  • Remove redundant warning about key server response validation. (#5392)
  • Fix bug where old keys stored in the database with a null valid until timestamp caused all verification requests for that key to fail. (#5415)
  • Fix excessive memory using with default federation_verify_certificates: true configuration. (#5417)

Synapse 1.0.0rc1 (2019-06-07)

Features

  • Synapse now more efficiently collates room statistics. (#4338, #5260, #5324)
  • Add experimental support for relations (aka reactions and edits). (#5220)
  • Ability to configure default room version. (#5223, #5249)
  • Allow configuring a range for the account validity startup job. (#5276)
  • CAS login will now hit the r0 API, not the deprecated v1 one. (#5286)
  • Validate federation server TLS certificates by default (implements MSC1711). (#5359)
  • Update /_matrix/client/versions to reference support for r0.5.0. (#5360)
  • Add a script to generate new signing-key files. (#5361)
  • Update upgrade and installation guides ahead of 1.0. (#5371)
  • Replace the perspectives configuration section with trusted_key_servers, and make validating the signatures on responses optional (since TLS will do this job for us). (#5374)
  • Add ability to perform password reset via email without trusting the identity server. (#5377)
  • Set default room version to v4. (#5379)

Bugfixes

  • Fixes client-server API not sending "m.heroes" to lazy-load /sync requests when a rooms name or its canonical alias are empty. Thanks to @dnaf for this work! (#5089)
  • Prevent federation device list updates breaking when processing multiple updates at once. (#5156)
  • Fix worker registration bug caused by ClientReaderSlavedStore being unable to see get_profileinfo. (#5200)
  • Fix race when backfilling in rooms with worker mode. (#5221)
  • Fix appservice timestamp massaging. (#5233)
  • Ensure that server_keys fetched via a notary server are correctly signed. (#5251)
  • Show the correct error when logging out and access token is missing. (#5256)
  • Fix error code when there is an invalid parameter on /_matrix/client/r0/publicRooms (#5257)
  • Fix error when downloading thumbnail with missing width/height parameter. (#5258)
  • Fix schema update for account validity. (#5268)
  • Fix bug where we leaked extremities when we soft failed events, leading to performance degradation. (#5274, #5278, #5291)
  • Fix "db txn 'update_presence' from sentinel context" log messages. (#5275)
  • Fix dropped logcontexts during high outbound traffic. (#5277)
  • Fix a bug where it is not possible to get events in the federation format with the request GET /_matrix/client/r0/rooms/{roomId}/messages. (#5293)
  • Fix performance problems with the rooms stats background update. (#5294)
  • Fix noisy 'no key for server' logs. (#5300)
  • Fix bug where a notary server would sometimes forget old keys. (#5307)
  • Prevent users from setting huge displaynames and avatar URLs. (#5309)
  • Fix handling of failures when processing incoming events where calling /event_auth on remote server fails. (#5317)
  • Ensure that we have an up-to-date copy of the signing key when validating incoming federation requests. (#5321)
  • Fix various problems which made the signing-key notary server time out for some requests. (#5333)
  • Fix bug which would make certain operations (such as room joins) block for 20 minutes while attemoting to fetch verification keys. (#5334)
  • Fix a bug where we could rapidly mark a server as unreachable even though it was only down for a few minutes. (#5335, #5340)
  • Fix a bug where account validity renewal emails could only be sent when email notifs were enabled. (#5341)
  • Fix failure when fetching batches of events during backfill, etc. (#5342)
  • Add a new room version where the timestamps on events are checked against the validity periods on signing keys. (#5348, #5354)
  • Fix room stats and presence background updates to correctly handle missing events. (#5352)
  • Include left members in room summaries' heroes. (#5355)
  • Fix federation_custom_ca_list configuration option. (#5362)
  • Fix missing logcontext warnings on shutdown. (#5369)

Improved Documentation

  • Fix docs on resetting the user directory. (#5282)
  • Fix notes about ACME in the MSC1711 faq. (#5357)

Internal Changes

  • Synapse will now serve the experimental "room complexity" API endpoint. (#5216)
  • The base classes for the v1 and v2_alpha REST APIs have been unified. (#5226, #5328)
  • Simplifications and comments in do_auth. (#5227)
  • Remove urllib3 pin as requests 2.22.0 has been released supporting urllib3 1.25.2. (#5230)
  • Preparatory work for key-validity features. (#5232, #5234, #5235, #5236, #5237, #5244, #5250, #5296, #5299, #5343, #5347, #5356)
  • Specify the type of reCAPTCHA key to use. (#5283)
  • Improve sample config for monthly active user blocking. (#5284)
  • Remove spurious debug from MatrixFederationHttpClient.get_json. (#5287)
  • Improve logging for logcontext leaks. (#5288)
  • Clarify that the admin change password API logs the user out. (#5303)
  • New installs will now use the v54 full schema, rather than the full schema v14 and applying incremental updates to v54. (#5320)
  • Improve docstrings on MatrixFederationClient. (#5332)
  • Clean up FederationClient.get_events for clarity. (#5344)
  • Various improvements to debug logging. (#5353)
  • Don't run CI build checks until sample config check has passed. (#5370)
  • Automatically retry buildkite builds (max twice) when an agent is lost. (#5380)

Synapse 0.99.5.2 released

30.05.2019 00:00 — Releases Neil Johnson

0.99.5.2 contains a critical performance fix following a regression that was introduced in 0.99.5. Affected servers will have experienced increased CPU and RAM usage with a knock on effect of generally sluggish performance.

Separately, we are also looking into reports relating to further performance degradations that may have been introduced as part of 0.99.5, though consider the 0.99.5.2 fix to be a significant improvement on previous 0.99.5.x releases.

Please upgrade asap.

You can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our Synapse installation guide page.

Synapse v0.99.5.2 Changelog

Bugfixes

  • Fix bug where we leaked extremities when we soft failed events, leading to performance degradation. (#5274, #5278, #5291)

Synapse 0.99.5.1 released!

21.05.2019 00:00 — Releases Neil Johnson

Okay folks, this is an important one. v0.99.5.1 will be the last release before we ship Synapse v1.0. It is really important that you upgrade to v0.99.5.1 because it implements rooms version 4 - which is the room version that Synapse 1.0 will default to.

This means that Synapse 1.0 servers will create new rooms as version 4 by default and servers that have not upgraded to at least v0.99.5.1 will not be able to join those rooms.

Over the coming days we will announce a release day for Synapse v1.0, the idea is to give admins 2 weeks notice so that anyone yet to configure their federation SSL certificate has time to do so. This is important, failure to configure your certs will mean not being able to federate with v1.0 servers. If you are not sure if you certs are valid, you can test here and read here for more info on what to do.

Aside from room v4, this release also includes the ability to blacklist specific IPs from federating as well as experimental support for edits and reactions. We are not quite ready to mark the feature 'done done', but it is very close. Watch out for news as the feature lands properly.

We're really close to v1.0 now, give us a few more days and we'll announce an official release date.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our Synapse installation guide page

Synapse v0.99.5.1 Changelog (since v0.99.4)

Features

  • Add ability to blacklist IP ranges for the federation client. (#5043)
  • Ratelimiting configuration for clients sending messages and the federation server has been altered to match login ratelimiting. The old configuration names will continue working. Check the sample config for details of the new names. (#5181)
  • Drop support for the undocumented /_matrix/client/v2_alpha API prefix. (#5190)
  • Add an option to disable per-room profiles. (#5196)
  • Stick an expiration date to any registered user missing one at startup if account validity is enabled. (#5204)
  • Add experimental support for relations (aka reactions and edits). (#5209, #5211, #5203, #5212)
  • Add a room version 4 which uses a new event ID format, as per MSC2002. (#5210, #5217)

Bugfixes

  • Fix image orientation when generating thumbnails (needs pillow>=4.3.0). Contributed by Pau Rodriguez-Estivill. (#5039)
  • Exclude soft-failed events from forward-extremity candidates: fixes "No forward extremities left!" error. (#5146)
  • Re-order stages in registration flows such that msisdn and email verification are done last. (#5174)
  • Fix 3pid guest invites. (#5177)
  • Fix a bug where the register endpoint would fail with M_THREEPID_IN_USE instead of returning an account previously registered in the same session. (#5187)
  • Prevent registration for user ids that are too long to fit into a state key. Contributed by Reid Anderson. (#5198)
  • Fix incompatibility between ACME support and Python 3.5.2. (#5218)
  • Fix error handling for rooms whose versions are unknown. (#5219)

Internal Changes

  • Make /sync attempt to return device updates for both joined and invited users. Note that this doesn't currently work correctly due to other bugs. (#3484)
  • Update tests to consistently be configured via the same code that is used when loading from configuration files. (#5171, #5185)
  • Allow client event serialization to be async. (#5183)
  • Expose DataStore._get_events as get_events_as_list. (#5184)
  • Make generating SQL bounds for pagination generic. (#5191)
  • Stop telling people to install the optional dependencies by default. (#5197)

Synapse 0.99.4 released!

15.05.2019 00:00 — Releases Neil Johnson

Hey ho Synapse release day.

0.99.4 is a maintenance release collecting together all of the bug fixes and performance improvements over the past few weeks, additionally there is further support for the upcoming 1.0 release (more info coming soon). One thing worth calling out is how many community contributions have made their way into 0.99.4, take a look at the change log for details, but many thanks to everyone submitting PRs, keep them coming!

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our Synapse installation guide page

Synapse 0.99.4 Changelog

Features

  • Add systemd-python to the optional dependencies to enable logging to the systemd journal. Install with pip install matrix-synapse[systemd]. (#4339)
  • Add a default .m.rule.tombstone push rule. (#4867)
  • Add ability for password provider modules to bind email addresses to users upon registration. (#4947)
  • Implementation of MSC1711 including config options for requiring valid TLS certificates for federation traffic, the ability to disable TLS validation for specific domains, and the ability to specify your own list of CA certificates. (#4967)
  • Remove presence list support as per MSC 1819. (#4989)
  • Reduce CPU usage starting pushers during start up. (#4991)
  • Add a delete group admin API. (#5002)
  • Add config option to block users from looking up 3PIDs. (#5010)
  • Add context to phonehome stats. (#5020)
  • Configure the example systemd units to have a log identifier of matrix-synapse instead of the executable name, python. Contributed by Christoph Müller. (#5023)
  • Add time-based account expiration. (#5027, #5047, #5073, #5116)
  • Add support for handling /versions, /voip and /push_rules client endpoints to client_reader worker. (#5063, #5065, #5070)
  • Add an configuration option to require authentication on /publicRooms and /profile endpoints. (#5083)
  • Move admin APIs to /_synapse/admin/v1. (The old paths are retained for backwards-compatibility, for now). (#5119)
  • Implement an admin API for sending server notices. Many thanks to @krombel who provided a foundation for this work. (#5121, #5142)

Bugfixes

  • Avoid redundant URL encoding of redirect URL for SSO login in the fallback login page. Fixes a regression introduced in #4220. Contributed by Marcel Fabian Krüger ("zaugin"). (#4555)
  • Fix bug where presence updates were sent to all servers in a room when a new server joined, rather than to just the new server. (#4942, #5103)
  • Fix sync bug which made accepting invites unreliable in worker-mode synapses. (#4955, #4956)
  • start.sh: Fix the --no-rate-limit option for messages and make it bypass rate limit on registration and login too. (#4981)
  • Transfer related groups on room upgrade. (#4990)
  • Prevent the ability to kick users from a room they aren't in. (#4999)
  • Fix issue #4596 so synapse_port_db script works with --curses option on Python 3. Contributed by Anders Jensen-Waud [email protected]. (#5003)
  • Clients timing out/disappearing while downloading from the media repository will now no longer log a spurious "Producer was not unregistered" message. (#5009)
  • Fix "cannot import name execute_batch" error with postgres. (#5032)
  • Fix disappearing exceptions in manhole. (#5035)
  • Workaround bug in twisted where attempting too many concurrent DNS requests could cause it to hang due to running out of file descriptors. (#5037)
  • Make sure we're not registering the same 3pid twice on registration. (#5071)
  • Don't crash on lack of expiry templates. (#5077)
  • Fix the ratelimting on third party invites. (#5104)
  • Add some missing limitations to room alias creation. (#5124, #5128)
  • Limit the number of EDUs in transactions to 100 as expected by synapse. Thanks to @superboum for this work! (#5138)
  • Fix bogus imports in unit tests. (#5154)

Internal Changes

  • Add test to verify threepid auth check added in #4435. (#4474)
  • Fix/improve some docstrings in the replication code. (#4949)
  • Split synapse.replication.tcp.streams into smaller files. (#4953)
  • Refactor replication row generation/parsing. (#4954)
  • Run black to clean up formatting on synapse/storage/roommember.py and synapse/storage/events.py. (#4959)
  • Remove log line for password via the admin API. (#4965)
  • Fix typo in TLS filenames in docker/README.md. Also add the '-p' commandline option to the 'docker run' example. Contributed by Jurrie Overgoor. (#4968)
  • Refactor room version definitions. (#4969)
  • Reduce log level of .well-known/matrix/client responses. (#4972)
  • Add config.signing_key_path that can be read by synapse.config utility. (#4974)
  • Track which identity server is used when binding a threepid and use that for unbinding, as per MSC1915. (#4982)
  • Rewrite KeyringTestCase as a HomeserverTestCase. (#4985)
  • README updates: Corrected the default POSTGRES_USER. Added port forwarding hint in TLS section. (#4987)
  • Remove a number of unused tables from the database schema. (#4992, #5028, #5033)
  • Run black on the remainder of synapse/storage/. (#4996)
  • Fix grammar in get_current_users_in_room and give it a docstring. (#4998)
  • Clean up some code in the server-key Keyring. (#5001)
  • Convert SYNAPSE_NO_TLS Docker variable to boolean for user friendliness. Contributed by Gabriel Eckerson. (#5005)
  • Refactor synapse.storage._base._simple_select_list_paginate. (#5007)
  • Store the notary server name correctly in server_keys_json. (#5024)
  • Rewrite Datastore.get_server_verify_keys to reduce the number of database transactions. (#5030)
  • Remove extraneous period from copyright headers. (#5046)
  • Update documentation for where to get Synapse packages. (#5067)
  • Add workarounds for pep-517 install errors. (#5098)
  • Improve logging when event-signature checks fail. (#5100)
  • Factor out an "assert_requester_is_admin" function. (#5120)
  • Remove the requirement to authenticate for /admin/server_version. (#5122)
  • Prevent an exception from being raised in a IResolutionReceiver and use a more generic error message for blacklisted URL previews. (#5155)
  • Run black on the tests directory. (#5170)
  • Fix CI after new release of isort. (#5179)

Synapse 0.99.3 released!

01.04.2019 00:00 — Releases Neil Johnson

Hey hey, a Synapse release for you today.

The big news in 0.99.3 is that the user directory has been completely re-written and should now be much more performant - this will benefit all installations, but especially those housing larger servers.

Aside from that we continue our 1.0 preparations and relatedly we've improved our docs, in particular to explain how .well-known works. On the perf side we've added rate limiting to login and register endpoints as well as now batching up read receipts to send over federation.

I've said it before, and I'll say it again:-

The most important thing that admins should know is that prior to 1.0 landing later this month, it is essential that the federation API has a valid TLS certificate - self signed certificates will no longer be accepted. For more details see our handy guide. Failure to do this will result in being unable to federate with other 1.0 servers.

As ever, you can get the new update here or any of the sources mentioned at https://github.com/matrix-org/synapse. Note, Synapse is now available from PyPI, pick it up here. Also, check out our new Synapse installation guide page.

Synapse 0.99.3 changelog

Features

  • The user directory has been rewritten to make it faster, with less chance of falling behind on a large server. (#4537#4846#4864#4887#4900#4944)
  • Add configurable rate limiting to the /register endpoint. (#4735#4804)
  • Move server key queries to federation reader. (#4757)
  • Add support for /account/3pid REST endpoint to client_reader worker. (#4759)
  • Add an endpoint to the admin API for querying the server version. Contributed by Joseph Weston. (#4772)
  • Include a default configuration file in the 'docs' directory. (#4791#4801)
  • Synapse is now permissive about trailing slashes on some of its federation endpoints, allowing zero or more to be present. (#4793)
  • Add support for /keys/query and /keys/changes REST endpoints to client_reader worker. (#4796)
  • Add checks to incoming events over federation for events evading auth (aka "soft fail"). (#4814)
  • Add configurable rate limiting to the /login endpoint. (#4821#4865)
  • Remove trailing slashes from certain outbound federation requests. Retry if receiving a 404. Context: #3622. (#4840)
  • Allow passing --daemonize flags to workers in the same way as with master. (#4853)
  • Batch up outgoing read-receipts to reduce federation traffic. (#4890#4927)
  • Add option to disable searching the user directory. (#4895)
  • Add option to disable searching of local and remote public room lists. (#4896)
  • Add ability for password providers to login/register a user via 3PID (email, phone). (#4931)

Bugfixes

  • Fix a bug where media with spaces in the name would get a corrupted name. (#2090)
  • Fix attempting to paginate in rooms where server cannot see any events, to avoid unnecessarily pulling in lots of redacted events. (#4699)
  • 'event_id' is now a required parameter in federated state requests, as per the matrix spec. (#4740)
  • Fix tightloop over connecting to replication server. (#4749)
  • Fix parsing of Content-Disposition headers on remote media requests and URL previews. (#4763)
  • Fix incorrect log about not persisting duplicate state event. (#4776)
  • Fix v4v6 option in HAProxy example config. Contributed by Flakebi. (#4790)
  • Handle batch updates in worker replication protocol. (#4792)
  • Fix bug where we didn't correctly throttle sending of USER_IP commands over replication. (#4818)
  • Fix potential race in handling missing updates in device list updates. (#4829)
  • Fix bug where synapse expected an un-specced prev_state field on state events. (#4837)
  • Transfer a user's notification settings (push rules) on room upgrade. (#4838)
  • fix test_auto_create_auto_join_where_no_consent. (#4886)
  • Fix a bug where hs_disabled_message was sometimes not correctly enforced. (#4888)
  • Fix bug in shutdown room admin API where it would fail if a user in the room hadn't consented to the privacy policy. (#4904)
  • Fix bug where blocked world-readable rooms were still peekable. (#4908)

Internal Changes

  • Add a systemd setup that supports synapse workers. Contributed by Luca Corbatto. (#4662)
  • Change from TravisCI to Buildkite for CI. (#4752)
  • When presence is disabled don't send over replication. (#4757)
  • Minor docstring fixes for MatrixFederationAgent. (#4765)
  • Optimise EDU transmission for the federation_sender worker. (#4770)
  • Update test_typing to use HomeserverTestCase. (#4771)
  • Update URLs for riot.im icons and logos in the default notification templates. (#4779)
  • Removed unnecessary $ from some federation endpoint path regexes. (#4794)
  • Remove link to deleted title in README. (#4795)
  • Clean up read-receipt handling. (#4797)
  • Add some debug about processing read receipts. (#4798)
  • Clean up some replication code. (#4799)
  • Add some docstrings. (#4815)
  • Add debug logger to try and track down #4422. (#4816)
  • Make shutdown API send explanation message to room after users have been forced joined. (#4817)
  • Update example_log_config.yaml. (#4820)
  • Document the generate option for the docker image. (#4824)
  • Fix check-newsfragment for debian-only changes. (#4825)
  • Add some debug logging for device list updates to help with #4828. (#4828)
  • Improve federation documentation, specifically .well-known support. Many thanks to @vaab. (#4832)
  • Disable captcha registration by default in unit tests. (#4839)
  • Add stuff back to the .gitignore. (#4843)
  • Clarify what registration_shared_secret allows for. (#4844)
  • Correctly log expected errors when fetching server keys. (#4847)
  • Update install docs to explicitly state a full-chain (not just the top-level) TLS certificate must be provided to Synapse. This caused some people's Synapse ports to appear correct in a browser but still (rightfully so) upset the federation tester. (#4849)
  • Move client read-receipt processing to federation sender worker. (#4852)
  • Refactor federation TransactionQueue. (#4855)
  • Comment out most options in the generated config. (#4863)
  • Fix yaml library warnings by using safe_load. (#4869)
  • Update Apache setup to remove location syntax. Thanks to @cwmke! (#4870)
  • Reinstate test case that runs unit tests against oldest supported dependencies. (#4879)
  • Update link to federation docs. (#4881)
  • fix test_auto_create_auto_join_where_no_consent. (#4886)
  • Use a regular HomeServerConfig object for unit tests rater than a Mock. (#4889)
  • Add some notes about tuning postgres for larger deployments. (#4895)
  • Add a config option for torture-testing worker replication. (#4902)
  • Log requests which are simulated by the unit tests. (#4905)
  • Allow newsfragments to end with exclamation marks. Exciting! (#4912)
  • Refactor some more tests to use HomeserverTestCase. (#4913)
  • Refactor out the state deltas portion of the user directory store and handler. (#4917)
  • Fix nginx example in ACME doc. (#4923)
  • Use an explicit dbname for postgres connections in the tests. (#4928)
  • Fix ClientReplicationStreamProtocol.__str__(). (#4929)