Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
date: '2021-06-01'
title: Synapse 1.35.0 released
categories:
- Releases
author: Dan Callahan
---

Synapse 1.35.0 is out! This release focused on improving internals as we drive toward better memory performance during room joins, but more on that below.

## Spaces: On by Default

Following the successful release of [Synapse 1.34](/blog/2021/05/17/synapse-1-34-0-released), the experimental Spaces flag is now enabled by default. If you had manually enabled the `experimental_features: { spaces_enabled: true }` flag in your homeserver configuration, you may now remove it.

## Bug Squashing

This release of Synapse fixes an issue which could cause federated room joins to fail when the join response exceeded a size limit which was too low ([#10082](https://github.com/matrix-org/synapse/pull/10082)). We've also improved what Synapse logs when it drops a connection in similar circumstances ([#10091](https://github.com/matrix-org/synapse/pull/10091)), which should aid diagnosis if a similar issue were to arise in the future.

GitHub user thermaq contributed a fix ([#10014](https://github.com/matrix-org/synapse/pull/10014)) for a bug which could cause user presence state to become stale.

Lastly our OpenTracing support now allows for profiling end-to-end performance on a per-user basis ([#9978](https://github.com/matrix-org/synapse/pull/9978)).

## An Update on Room Joins

We've been hammering away at shrinking Synapse's memory footprint when joining large / complex rooms, and while we're not there yet, the end is in sight! In particular, this release includes many internal refactorings, including using [ijson](https://pypi.org/project/ijson/) to parse the JSON response to `/send_join` ([#9958](https://github.com/matrix-org/synapse/pull/9958)), clearing the way for substantial improvements.

Memory usage still spikes because we're effectively doing the same work with a different library, but ijson's design allows for iterative parsing. This will pay dividends once we modify the code downstream of `/send_join` to take advantage of it.

Concretely, Erik Johnston has an experimental branch of Synapse which completely eliminates the memory spike:

![Memory usage graph for Synapse 1.33, 1.35, and an experimental branch](/blog/img/2021-06-01-synapse-1.35-join-memory.png)

The remaining work is centered on splitting that branch into self-contained, reviewable pull requests, like a rewrite of the Synapse Keyring class ([#10035](https://github.com/matrix-org/synapse/pull/10035)). After that's merged, we'll need to make one further change to properly batch up work, at which point we should attain the efficiency gains from Erik's experiment.

## Everything Else

GitHub user savyajha contributed a security hardened systemd unit file which effectively sandboxes Synapse ([#9803](https://github.com/matrix-org/synapse/pull/9803)). While not enabled by default, we'd encourage security conscious users to review the [example file](https://github.com/matrix-org/synapse/blob/v1.35.0/contrib/systemd/override-hardened.conf) and associated [documentation](https://github.com/matrix-org/synapse/blob/v1.35.0/docs/systemd-with-workers/README.md#hardening).

Please see the [Release Notes](https://github.com/matrix-org/synapse/blob/v1.35.0/CHANGES.md) for a complete list of changes in this release.

Synapse is a Free and Open Source Software project, and we'd like to extend our thanks to everyone who contributed to this release, including [dklimpel](https://github.com/dklimpel), [jerinjtitus](https://github.com/jerinjtitus), [junquera](https://github.com/junquera), [lonyeon](https://github.com/lonyeon), [savyajha](https://github.com/savyajha), and [thermaq](https://github.com/thermaq).
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.