From 05737fb7a09bbaa13be68b80632bd6ff1d08a982 Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Wed, 2 Jun 2021 10:54:51 +0100 Subject: [PATCH 1/4] Release Synapse 1.35.0 Signed-off-by: Dan Callahan --- .../06/2021-06-01-synapse-1.35.0-released.mdx | 41 ++++++++++++++++++ .../2021-06-01-synapse-1.35-join-memory.png | Bin 0 -> 35107 bytes 2 files changed, 41 insertions(+) create mode 100644 gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx create mode 100644 gatsby/static/blog/img/2021-06-01-synapse-1.35-join-memory.png diff --git a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx new file mode 100644 index 0000000000..287cf81651 --- /dev/null +++ b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx @@ -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! + +## Spaces: On by Default + +Following the successful release of [Synapse 1.34](../05/05/2021-05-17-synapse-1.34.0-released.mdx), 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)), which clear 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). diff --git a/gatsby/static/blog/img/2021-06-01-synapse-1.35-join-memory.png b/gatsby/static/blog/img/2021-06-01-synapse-1.35-join-memory.png new file mode 100644 index 0000000000000000000000000000000000000000..1d72a5ef426bd0406e264c61ccd32829ebe345f4 GIT binary patch literal 35107 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

#j0Unstp1F_ehYx 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 z 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 pcol^fE_yjXiGzV5K^!=J- Date: Wed, 2 Jun 2021 10:59:04 +0100 Subject: [PATCH 2/4] Fix link Signed-off-by: Dan Callahan --- .../content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx index 287cf81651..4f791f1725 100644 --- a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx +++ b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx @@ -10,7 +10,7 @@ Synapse 1.35.0 is out! ## Spaces: On by Default -Following the successful release of [Synapse 1.34](../05/05/2021-05-17-synapse-1.34.0-released.mdx), 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. +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 From 531637d811154f70976b3e47c850cc846094ceb9 Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Wed, 2 Jun 2021 11:01:35 +0100 Subject: [PATCH 3/4] Add a little more introductory text Signed-off-by: Dan Callahan --- .../content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx index 4f791f1725..f13a91f958 100644 --- a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx +++ b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx @@ -6,7 +6,7 @@ author: Dan Callahan --- -Synapse 1.35.0 is out! +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 From ffb450d680e5a3340a33d9461696729d44c8ef4c Mon Sep 17 00:00:00 2001 From: Dan Callahan Date: Wed, 2 Jun 2021 11:10:22 +0100 Subject: [PATCH 4/4] Phrasing Signed-off-by: Dan Callahan --- .../content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx index f13a91f958..6ba46794c1 100644 --- a/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx +++ b/gatsby/content/blog/2021/06/2021-06-01-synapse-1.35.0-released.mdx @@ -22,7 +22,7 @@ Lastly our OpenTracing support now allows for profiling end-to-end performance o ## 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)), which clear the way for substantial improvements. +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.