Skip to content

Famedly release/v1.149.1#244

Merged
FrenchGithubUser merged 31 commits intomasterfrom
famedly-release/v1.149.1
Mar 17, 2026
Merged

Famedly release/v1.149.1#244
FrenchGithubUser merged 31 commits intomasterfrom
famedly-release/v1.149.1

Conversation

@FrenchGithubUser
Copy link
Copy Markdown
Member

@FrenchGithubUser FrenchGithubUser commented Mar 17, 2026

Famedly Synapse Release v1.149.1_1

Depends on famedly/complement#12

Famedly additions for v1.149.1_1

  • chore: Remove gosu usage from Synapse (Jason Little)
  • chore: Add in CI testing of the module based on its own test suite (Jason Little)
  • fix: include modpack build for TIM 1.1 and adjust for actual version that exists (Jason Little)
  • feat: add famedly control module in docker image (FrenchGithubUser)

Notes for Famedly:

MadLittleMods and others added 29 commits February 17, 2026 13:15
…mages being chosen over local) (#19475)

Fix remote images being chosen over the local ones we just built with
Complement in CI (any Docker environment using the `containerd` image
store). This problem means that Complement jobs in CI don't actually
test against the code from the PR (since 2026-02-10).

This PR approaches the problem the same way that @AndrewFerr proposed in
element-hq/synapse#18210. This is better than
the alternative listed below as we can just make our code compatible
with whatever image store is being used.
### Problem

Spawning from
element-hq/synapse#19460 (comment)
where we found that our Complement jobs in CI don't actually test
against the code from the PR at the moment.

This is caused by a change in Docker Engine 29.0.0:

> `containerd` image store is now the default for **fresh installs**.
This doesn't apply to daemons configured with `userns-remap` (see
[moby#47377](moby/moby#47377)).
>
> *-- 29.0.0 (2025-11-10),
https://docs.docker.com/engine/release-notes/29/#2900*

And our `ubuntu-latest` GitHub runner (`Current runner version:
'2.331.0'`)
[points](https://github.com/actions/runner-images/blob/ubuntu24/20260209.23/images/ubuntu/Ubuntu2404-Readme.md)
to using Docker client/server `29.1.5` 🎯

This Docker version bump happened on
actions/runner-images@416418d
(2026-02-10) (`28.0.4` -> `29.1.5`). Specific PR:
actions/runner-images#13633

---

I found this because I reviewed and remembered
element-hq/synapse#18210 was a thing that
@AndrewFerr ran into. And then running `dockers system prune` also
revealed the problematic `containerd` in CI. Checking the Docker
changelogs, I found the new default culprit and then could trace down
where the GitHub runners made the dependency update.

---------

Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
Bumps [pillow](https://github.com/python-pillow/Pillow) from 12.0.0 to
12.1.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/python-pillow/Pillow/releases">pillow's
releases</a>.</em></p>
<blockquote>
<h2>12.1.1</h2>
<p><a
href="https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html">https://pillow.readthedocs.io/en/stable/releasenotes/12.1.1.html</a></p>
<h2>Dependencies</h2>
<ul>
<li>Patch libavif for svt-av1 4.0 compatibility <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9413">#9413</a>
[<a href="https://github.com/hugovk"><code>@​hugovk</code></a>]</li>
</ul>
<h2>Other changes</h2>
<ul>
<li>Fix OOB Write with invalid tile extents <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9427">#9427</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<h2>12.1.0</h2>
<p><a
href="https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html">https://pillow.readthedocs.io/en/stable/releasenotes/12.1.0.html</a></p>
<h2>Deprecations</h2>
<ul>
<li>Deprecate getdata(), in favour of new get_flattened_data() <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9292">#9292</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<h2>Documentation</h2>
<ul>
<li>Specify APNG duration type when opening <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9368">#9368</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Added release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9350">#9350</a>
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9366">#9366</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update ImageMorph documentation <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9349">#9349</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Docs: update major bump cadence <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9334">#9334</a>
[<a href="https://github.com/hugovk"><code>@​hugovk</code></a>]</li>
<li>Add release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9070">#9070</a>
<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9320">#9320</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated Ubuntu version <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9306">#9306</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update macOS tested Pillow versions <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9265">#9265</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>Update harfbuzz to 12.3.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9355">#9355</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update xz to 5.8.2 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9343">#9343</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libjpeg-turbo to 3.1.3 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9333">#9333</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated zlib-ng to 2.3.2 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9324">#9324</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated libpng to 1.6.53 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9325">#9325</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update actions/checkout action to v6 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9323">#9323</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Update dependency mypy to v1.19.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9322">#9322</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
<li>Updated libpng to 1.6.51 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9305">#9305</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated brotli to 1.2.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9284">#9284</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update libimagequant to 4.4.1 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9301">#9301</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update zlib-ng to 2.3.1, except on manylinux2014 aarch64 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9312">#9312</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Updated harfbuzz to 12.2.0 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9289">#9289</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Update github-actions <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9277">#9277</a>
[@<a href="https://github.com/apps/renovate">renovate[bot]</a>]</li>
</ul>
<h2>Testing</h2>
<ul>
<li>Replace pre-commit with prek <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9360">#9360</a>
[<a href="https://github.com/hugovk"><code>@​hugovk</code></a>]</li>
<li>Test PyQt6 on Python 3.14 on Windows <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9353">#9353</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Test 32-bit Windows on Windows Server 2022 <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9345">#9345</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
<li>Correct variable type <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9335">#9335</a>
[<a
href="https://github.com/radarhere"><code>@​radarhere</code></a>]</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python-pillow/Pillow/commit/5158d98c807e719c5938aa3886913ef0ea6814e9"><code>5158d98</code></a>
12.1.1 version bump</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/9000313cc5d4a31bdcdd6d7f0781101abab553aa"><code>9000313</code></a>
Fix OOB Write with invalid tile extents (<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9427">#9427</a>)</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/cd0111849fb32c40860e3ee3d57b9b1cee4260cf"><code>cd01118</code></a>
Patch libavif for svt-av1 4.0 compatibility</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/46f45f674d47b5d8bc54230dda8fe9e214598b87"><code>46f45f6</code></a>
12.1.0 version bump</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/c9ac097edb5594f63c40acd9afe6802547200379"><code>c9ac097</code></a>
Simplify band splitting (<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9291">#9291</a>)</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/3baedf264804d199bc19458d11bcff02ce7598eb"><code>3baedf2</code></a>
Deprecate getdata(), in favour of new get_flattened_data() (<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9292">#9292</a>)</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/b51a0366852c1d519d108dfec8fc2d738cd8080f"><code>b51a036</code></a>
Specify APNG duration type when opening (<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9368">#9368</a>)</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/8d08e31533065b623399a54bc92b39a756599ad4"><code>8d08e31</code></a>
Add release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9348">#9348</a>
(<a
href="https://redirect.github.com/python-pillow/Pillow/issues/9369">#9369</a>)</li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/432707ea810ae619e2a9e4a9737c169cacaa8eda"><code>432707e</code></a>
Added release notes for <a
href="https://redirect.github.com/python-pillow/Pillow/issues/9348">#9348</a></li>
<li><a
href="https://github.com/python-pillow/Pillow/commit/2d589107fb3a4aba8389932a65ff771bf9b4deb1"><code>2d58910</code></a>
Specify APNG duration type when opening</li>
<li>Additional commits viewable in <a
href="https://github.com/python-pillow/Pillow/compare/12.0.0...12.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pillow&package-manager=pip&previous-version=12.0.0&new-version=12.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/element-hq/synapse/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Quentin Gliech <quenting@element.io>
Bumps the patches group with 2 updates:
[anyhow](https://github.com/dtolnay/anyhow) and
[regex](https://github.com/rust-lang/regex).

Updates `anyhow` from 1.0.100 to 1.0.101
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/anyhow/releases">anyhow's
releases</a>.</em></p>
<blockquote>
<h2>1.0.101</h2>
<ul>
<li>Add #[inline] to anyhow::Ok helper (<a
href="https://redirect.github.com/dtolnay/anyhow/issues/437">#437</a>,
thanks <a
href="https://github.com/Ibitier"><code>@​Ibitier</code></a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dtolnay/anyhow/commit/80bfe291b16071c70f141e90e67e7032d966826b"><code>80bfe29</code></a>
Release 1.0.101</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/dff8c432f95095cac19aa446da5047880b8ebdf3"><code>dff8c43</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/anyhow/issues/437">#437</a>
from Ibitier/inline-ok-helper</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/85d9ea9a1c7d7490578865e16ff64787efc7d01d"><code>85d9ea9</code></a>
Add #[inline] to anyhow::Ok helper</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/54036cc289b754775b884485f486e000bcda2875"><code>54036cc</code></a>
Update ui test suite to nightly-2026-01-21</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/cce0579d85fd1f6352a5955a9c134fc8655c853d"><code>cce0579</code></a>
Update actions/upload-artifact@v5 -&gt; v6</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/f2c598ca0e8ffd7ffcbcf93b8a6ad4df57c719fd"><code>f2c598c</code></a>
Update actions/upload-artifact@v4 -&gt; v5</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/2c0bda4ce944d943e7141f0316b0ea996602238e"><code>2c0bda4</code></a>
Update to 2021 edition</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/0d822681293d71c72440c9cdd635b4f15da064c4"><code>0d82268</code></a>
Remove rustc version requirement from readme</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/67df01216d29bc3bede925ab4483353b66c159f2"><code>67df012</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/anyhow/issues/436">#436</a>
from dtolnay/up</li>
<li><a
href="https://github.com/dtolnay/anyhow/commit/c8984880a87ae4fd4b04c956cfdc9af5f69eab55"><code>c898488</code></a>
Raise required compiler to Rust 1.68</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/anyhow/compare/1.0.100...1.0.101">compare
view</a></li>
</ul>
</details>
<br />

Updates `regex` from 1.12.2 to 1.12.3
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/regex/blob/master/CHANGELOG.md">regex's
changelog</a>.</em></p>
<blockquote>
<h1>1.12.3 (2025-02-03)</h1>
<p>This release excludes some unnecessary things from the archive
published to
crates.io. Specifically, fuzzing data and various shell scripts are now
excluded. If you run into problems, please file an issue.</p>
<p>Improvements:</p>
<ul>
<li><a
href="https://redirect.github.com/rust-lang/regex/pull/1319">#1319</a>:
Switch from a Cargo <code>exclude</code> list to an <code>include</code>
list, and exclude some
unnecessary stuff.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-lang/regex/commit/b028e4f40eac8959d05e82abf8404906b1c565c0"><code>b028e4f</code></a>
1.12.3</li>
<li><a
href="https://github.com/rust-lang/regex/commit/5e195de266e203441b2c8001d6ebefab1161a59e"><code>5e195de</code></a>
regex-automata-0.4.14</li>
<li><a
href="https://github.com/rust-lang/regex/commit/a3433f691863d80300dfd6a52e332cb5a568e895"><code>a3433f6</code></a>
regex-syntax-0.8.9</li>
<li><a
href="https://github.com/rust-lang/regex/commit/0c07fae444adf0802d84455e689f1143d2dd7790"><code>0c07fae</code></a>
regex-lite-0.1.9</li>
<li><a
href="https://github.com/rust-lang/regex/commit/6a810068f030c023a12c93ccae49bc5fd907c4f6"><code>6a81006</code></a>
cargo: exclude development scripts and fuzzing data</li>
<li><a
href="https://github.com/rust-lang/regex/commit/4733e28ba4f281f643ce93e4089eccbb9a9d5a5a"><code>4733e28</code></a>
automata: fix <code>onepass::DFA::try_search_slots</code> panic when too
many slots are ...</li>
<li>See full diff in <a
href="https://github.com/rust-lang/regex/compare/1.12.2...1.12.3">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…t as a test. (#19486)

This fixes one of the 2 blockers to using pytest instead of Trial (which
is not formally-motivated, but sometimes seems like an interesting idea
because
pytest has seen a lot of developer experience features that Trial
hasn't. It would also removes one more coupling to the Twisted
framework.)

---

The `test_` prefix to this test helper makes it appear as a test to
pytest.

We *can* set a `__test__ = False` attribute on the test, but it felt
cleaner to just rename it (as I also thought it would be a test from
that name!).

This was previously reported as:
element-hq/synapse#18665

---------

Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
…efore issuing an access token. (#18518)

Fixes: #18503

---------

Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
Co-authored-by: Quentin Gliech <quenting@element.io>
Deleting devices should be fairly
rare, and if someone gets logged out it's helpful to grep logs for a
user id or device id and see where it died.
Spawning from
element-hq/synapse-small-hosts#348 where some
test appears to be flaky because some homeserver objects are frozen in
the garbage collector.

We set
[`freeze=False`](https://github.com/element-hq/synapse-small-hosts/blob/a9a6869aa9a67176bdddc3b8ae2d0de0996d8cf4/multi_synapse/app/shard.py#L319-L321)
in the [Synapse Pro for small
hosts](https://docs.element.io/latest/element-server-suite-pro/synapse-pro-for-small-hosts/overview/)
code but I just want to use this log to make extra sure this isn't being
run somehow. The follow-up here would be to see what else would cause
something to be frozen in the garbage collector.
…#19127)

Co-authored-by: Olivier 'reivilibre' <oliverw@element.io>
… group (#19493)

Bumps the minor-and-patches group with 1 update:
[docker/login-action](https://github.com/docker/login-action).

Updates `docker/login-action` from 3.6.0 to 3.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/login-action/releases">docker/login-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.7.0</h2>
<ul>
<li>Add <code>scope</code> input to set scopes for the authentication
token by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/912">docker/login-action#912</a></li>
<li>Add support for AWS European Sovereign Cloud ECR by <a
href="https://github.com/dphi"><code>@​dphi</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/914">docker/login-action#914</a></li>
<li>Ensure passwords are redacted with <code>registry-auth</code> input
by <a href="https://github.com/crazy-max"><code>@​crazy-max</code></a>
in <a
href="https://redirect.github.com/docker/login-action/pull/911">docker/login-action#911</a></li>
<li>build(deps): bump lodash from 4.17.21 to 4.17.23 in <a
href="https://redirect.github.com/docker/login-action/pull/915">docker/login-action#915</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v3.6.0...v3.7.0">https://github.com/docker/login-action/compare/v3.6.0...v3.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/login-action/commit/c94ce9fb468520275223c153574b00df6fe4bcc9"><code>c94ce9f</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/915">#915</a>
from docker/dependabot/npm_and_yarn/lodash-4.17.23</li>
<li><a
href="https://github.com/docker/login-action/commit/8339c958ce8511f38d0c474c1886a87c802bf1ef"><code>8339c95</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/912">#912</a>
from docker/scope</li>
<li><a
href="https://github.com/docker/login-action/commit/c83e9320c8beb50b77dd007c46d5c8161f0cac4a"><code>c83e932</code></a>
build(deps): bump lodash from 4.17.21 to 4.17.23</li>
<li><a
href="https://github.com/docker/login-action/commit/b268aa57e39ff0a5386d2fd1eded4e2e1d60d705"><code>b268aa5</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/login-action/commit/a60322927812ddc99316dd6252b4fba6d8f09ac1"><code>a603229</code></a>
documentation for scope input</li>
<li><a
href="https://github.com/docker/login-action/commit/7567f92a74b2639be1bd8bc932a112a0d81283da"><code>7567f92</code></a>
Add scope input to set scopes for the authentication token</li>
<li><a
href="https://github.com/docker/login-action/commit/0567fa5ae8c9a197cb207537dc5cbb43ca3d803f"><code>0567fa5</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/914">#914</a>
from dphi/add-support-for-amazonaws.eu</li>
<li><a
href="https://github.com/docker/login-action/commit/f6ef57754547a85003a0e18f789be661346d4a6e"><code>f6ef577</code></a>
feat: add support for AWS European Sovereign Cloud ECR registries</li>
<li><a
href="https://github.com/docker/login-action/commit/916386b00027d425839f8da46d302dab33f5875b"><code>916386b</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/911">#911</a>
from crazy-max/ensure-redact</li>
<li><a
href="https://github.com/docker/login-action/commit/5b3f94a294ea5478af3af437baa6ad0d3dcd04fd"><code>5b3f94a</code></a>
chore: update generated content</li>
<li>Additional commits viewable in <a
href="https://github.com/docker/login-action/compare/v3.6.0...c94ce9fb468520275223c153574b00df6fe4bcc9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/login-action&package-manager=github_actions&previous-version=3.6.0&new-version=3.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
MSC4380 has now completed FCP, so we can add stable support for it.

Co-authored-by: Quentin Gliech <quenting@element.io>
…he Rust HTTP client (#19498)

Spawning from
[looking](https://matrix.to/#/!cnVVNLKqgUzNTOFQkz:matrix.org/$XOVFm5mjCzzmhUaGc202zGdSq8eWgjr00MJqNSfzHiA?via=element.io&via=matrix.org&via=one.ems.host)
at some traces and seeing the Synapse Rust HTTP client taking way longer
than what the Synapse Pro Event Cache claims it was able to respond in
(added some [better
tracing](element-hq/synapse-pro-modules#38) for
that). I don't think this specific change will have a meaningful impact
but just something I saw (pre-optimization).
When a worker gets very busy some of these loops can get large and end
up taking hundreds of ms to complete. To help keep the reactor tick
times reasonable we add a periodic yield into these loops.

These were found by doing a `py-spy` and speedscope.net (in time order)
to see where we were spending blocks of time
…. (#19515)

Use non-deprecated imports for collections

Other than being deprecated, these legacy imports also don't seem to be
compatible with [Ty](https://github.com/astral-sh/ty)

---------

Signed-off-by: Olivier 'reivilibre <oliverw@matrix.org>
Bumps the patches group with 1 update:
[futures](https://github.com/rust-lang/futures-rs).

Updates `futures` from 0.3.31 to 0.3.32
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/futures-rs/releases">futures's
releases</a>.</em></p>
<blockquote>
<h2>0.3.32</h2>
<ul>
<li>Bump MSRV of utility crates to 1.71. (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2989">#2989</a>)</li>
<li>Soft-deprecate <code>ready!</code> macro in favor of
<code>std::task::ready!</code> added in Rust 1.64 (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2925">#2925</a>)</li>
<li>Soft-deprecate <code>pin_mut!</code> macro in favor of
<code>std::pin::pin!</code> added in Rust 1.68 (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2929">#2929</a>)</li>
<li>Add <code>FuturesOrdered::clear</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2927">#2927</a>)</li>
<li>Add <code>mpsc::*Receiver::recv</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2947">#2947</a>)</li>
<li>Add <code>mpsc::*Receiver::try_recv</code> and deprecate
<code>mpsc::*Receiver::::try_next</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2944">#2944</a>)</li>
<li>Implement <code>FusedStream</code> for <code>sink::With</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2948">#2948</a>)</li>
<li>Add <code>no_std</code> support for <code>shared</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2868">#2868</a>)</li>
<li>Make <code>Mutex::new()</code> const (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2956">#2956</a>)</li>
<li>Add <code>#[clippy::has_significant_drop]</code> to guards (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2967">#2967</a>)</li>
<li>Remove dependency to <code>pin-utils</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2929">#2929</a>)</li>
<li>Remove dependency on <code>num_cpus</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2946">#2946</a>)</li>
<li>Performance improvements (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2983">#2983</a>)</li>
<li>Documentation improvements (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2925">#2925</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2926">#2926</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2940">#2940</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2971">#2971</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md">futures's
changelog</a>.</em></p>
<blockquote>
<h1>0.3.32 - 2026-02-15</h1>
<ul>
<li>Bump MSRV of utility crates to 1.71. (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2989">#2989</a>)</li>
<li>Soft-deprecate <code>ready!</code> macro in favor of
<code>std::task::ready!</code> added in Rust 1.64 (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2925">#2925</a>)</li>
<li>Soft-deprecate <code>pin_mut!</code> macro in favor of
<code>std::pin::pin!</code> added in Rust 1.68 (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2929">#2929</a>)</li>
<li>Add <code>FuturesOrdered::clear</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2927">#2927</a>)</li>
<li>Add <code>mpsc::*Receiver::recv</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2947">#2947</a>)</li>
<li>Add <code>mpsc::*Receiver::try_recv</code> and deprecate
<code>mpsc::*Receiver::::try_next</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2944">#2944</a>)</li>
<li>Implement <code>FusedStream</code> for <code>sink::With</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2948">#2948</a>)</li>
<li>Add <code>no_std</code> support for <code>shared</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2868">#2868</a>)</li>
<li>Make <code>Mutex::new()</code> const (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2956">#2956</a>)</li>
<li>Add <code>#[clippy::has_significant_drop]</code> to guards (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2967">#2967</a>)</li>
<li>Remove dependency to <code>pin-utils</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2929">#2929</a>)</li>
<li>Remove dependency on <code>num_cpus</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2946">#2946</a>)</li>
<li>Performance improvements (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2983">#2983</a>)</li>
<li>Documentation improvements (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2925">#2925</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2926">#2926</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2940">#2940</a>,
<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2971">#2971</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/d9bba94c239daa1175a5bb2958f37a5c72db3f6a"><code>d9bba94</code></a>
Release 0.3.32</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/151e0b90dec62103df5239f0612f42467994f406"><code>151e0b9</code></a>
Add comments on rust-version field in Cargo.toml</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/4aaf00c35176d7180557559f54b0c151e2e608aa"><code>4aaf00c</code></a>
Bump MSRV of utility crates to 1.71</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/a4cce12c55942c6e1f2a507061fc6ca94c5b8862"><code>a4cce12</code></a>
perf: improve AtomicWaker::wake performance (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2983">#2983</a>)</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/ba9d102ca6e4a941a5068a1a8dcf0ff3a6c9085a"><code>ba9d102</code></a>
Add <code>#[clippy::has_significant_drop]</code> to guards (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2967">#2967</a>)</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/20396a83eff35414d17320dc35858243e54f0bc8"><code>20396a8</code></a>
Fix rustdoc::broken_intra_doc_links warning</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/815f6eb4e40ca9ff81d7d9a25a863d3c1ffdb79e"><code>815f6eb</code></a>
Fix documentation of <code>BiLock::lock</code> (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2971">#2971</a>)</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/0f0db0421d4edc9fc56c3643f7e7f3bd23058023"><code>0f0db04</code></a>
futures-util: make <code>Mutex::new()</code> const (<a
href="https://redirect.github.com/rust-lang/futures-rs/issues/2956">#2956</a>)</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/5d6fc5e4083f5da376ccc7a50403d842e553e286"><code>5d6fc5e</code></a>
ci: Test big-endian target (s390x Linux)</li>
<li><a
href="https://github.com/rust-lang/futures-rs/commit/9f739fe40b9c3e80b8f40054a739a220428a4675"><code>9f739fe</code></a>
Ignore dead_code lint on Fn1 trait</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/futures-rs/compare/0.3.31...0.3.32">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=futures&package-manager=cargo&previous-version=0.3.31&new-version=0.3.32)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This is a manual lock bump, as it looks like Dependabot is currently
timing out updating dependencies. This should hopefully unlock it, as it
will have fewer dependencies to update.

Two outstanding exceptions:

- pympler upgrade adds a pywin32 deps, which is missing sdist (so CI is
complaining)
- pysaml2 for some unknown reason pinned the MAX version of pyopenssl,
which duplicates pyopenssl and cryptography, which obviously breaks
stuff
*This PR was originally only to enable
[MSC4222](matrix-org/matrix-spec-proposals#4222)
Complement tests (`/sync` `state_after`) but after merging the [fix
PR](element-hq/synapse#19463), we discovered
that while the tests pass locally, [fail in
CI](element-hq/synapse#19460 (comment)).
To unblock the RC, we decided to revert the fix PR (see
element-hq/synapse#19474 (comment)
for more info). To better ensure tests actually pass in CI, we're
re-introducing the fix here in the same PR that we enable the tests in.*

---

Fix `/sync` missing membership in `state_after`.

This applies to any scenario where the first membership has a different
`sender` compared to the `state_key` and then the second membership has
the same `sender`/`state_key`. Like someone inviting another person and
then them joining. Or someone being kicked and then they leave.

This bug has been present since the MSC4222 implementation was
introduced into the codebase
(element-hq/synapse#17888).

---

Fix element-hq/synapse#19455
Fix element-hq/customer-success#656

I have a feeling, this might also fix these issues (will close and see
how people report back):

Fix element-hq/synapse#18182
Fix element-hq/synapse#19478

 ### Testing strategy

Complement tests: matrix-org/complement#842

We will need element-hq/synapse#19460 to merge
in order to enable the Complement tests in Synapse but this PR should be
merged first so they pass in the first place. I've tested locally that
the Complement tests pass with this fix.




### Dev notes


[MSC4222](matrix-org/matrix-spec-proposals#4222)
has already been merged into the spec and is already part of Matrix
v1.16 but we haven't [stabilized support in Synapse
yet](element-hq/synapse#19414).

---

In the same ballpark:

 - element-hq/synapse#19455
 - element-hq/synapse#17050
 - element-hq/synapse#17430
 - element-hq/synapse#16940
 - element-hq/synapse#18182
 - element-hq/synapse#18793
 - element-hq/synapse#19478

---

Docker builds preferring remote image over the local image we just
built,
element-hq/synapse#19460 (comment)

`containerd` image store (storage driver, driver type)

-> element-hq/synapse#19475


### Todo

- [x] Wait for element-hq/synapse#19463 to merge
so the Complement tests all pass
- [x] Wait for element-hq/synapse#19475 to merge

### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct (run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))

---------

Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
*As suggested by @sandhose in
element-hq/synapse#19498 (comment)

Simplify Rust HTTP client response streaming and limiting


### Dev notes

Synapse's Rust HTTP client was introduced in
element-hq/synapse#18357



### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct (run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
To address element-hq/synapse#19541

### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct (run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 17, 2026

Codecov Report

❌ Patch coverage is 77.52294% with 49 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.14%. Comparing base (210d8d4) to head (2b91d69).
⚠️ Report is 32 commits behind head on master.

Files with missing lines Patch % Lines
synapse/util/async_helpers.py 45.16% 16 Missing and 1 partial ⚠️
synapse/util/caches/response_cache.py 82.25% 7 Missing and 4 partials ⚠️
synapse/storage/databases/main/events_worker.py 58.33% 3 Missing and 2 partials ⚠️
synapse/config/experimental.py 42.85% 2 Missing and 2 partials ⚠️
synapse/handlers/room_member.py 69.23% 4 Missing ⚠️
synapse/handlers/sync.py 40.00% 3 Missing ⚠️
synapse/util/background_queue.py 66.66% 1 Missing and 1 partial ⚠️
synapse/util/clock.py 66.66% 2 Missing ⚠️
synapse/app/_base.py 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #244      +/-   ##
==========================================
- Coverage   80.14%   80.14%   -0.01%     
==========================================
  Files         501      501              
  Lines       71375    71549     +174     
  Branches    10732    10751      +19     
==========================================
+ Hits        57204    57342     +138     
- Misses      10918    10947      +29     
- Partials     3253     3260       +7     
Files with missing lines Coverage Δ
synapse/api/auth/mas.py 73.18% <100.00%> (+0.15%) ⬆️
synapse/api/auth/msc3861_delegated.py 82.71% <100.00%> (+0.07%) ⬆️
synapse/api/constants.py 100.00% <100.00%> (ø)
synapse/api/errors.py 90.41% <100.00%> (ø)
synapse/appservice/api.py 42.79% <100.00%> (+0.25%) ⬆️
synapse/config/cache.py 89.13% <100.00%> (+0.24%) ⬆️
synapse/event_auth.py 69.38% <100.00%> (+0.12%) ⬆️
synapse/federation/federation_server.py 52.70% <ø> (ø)
synapse/handlers/device.py 72.72% <100.00%> (+0.04%) ⬆️
synapse/handlers/room.py 69.27% <ø> (ø)
... and 26 more

... and 2 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 210d8d4...2b91d69. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@FrenchGithubUser FrenchGithubUser marked this pull request as ready for review March 17, 2026 15:29
@FrenchGithubUser FrenchGithubUser requested a review from a team as a code owner March 17, 2026 15:29
Copilot AI review requested due to automatic review settings March 17, 2026 15:29
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release bump to Synapse v1.149.1 with Famedly packaging notes, plus upstream changes around request cancellation, response caching, and experimental MSC4388 rendezvous support (Rust-backed), alongside CI/Docker workflow updates.

Changes:

  • Add experimental MSC4388 rendezvous endpoint (Rust handler + Python servlets/config/tests) and advertise it via /versions.
  • Rework ResponseCache timeouts to use Duration, add inflight pruning/cancellation behavior, and extend cancellation-related tests/helpers.
  • Misc maintenance: wheel timer Duration support, event-cache loop yielding, Docker/complement image tagging fixes, dependency/version bumps, and updated release notes.

Reviewed changes

Copilot reviewed 66 out of 68 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
tests/util/test_wheel_timer.py Update WheelTimer bucket size type
tests/util/test_async_helpers.py Improve ObservableDeferred cancellation tests
tests/util/caches/test_response_cache.py Add ResponseCache cancellation/error tests
tests/test_server.py Rename disconnect helper usage
tests/synapse_rust/test_http_client.py Add response-limit exceeded test
tests/rest/client/test_sync.py Add /sync cancellation tests
tests/rest/client/test_msc4388_rendezvous.py New MSC4388 rendezvous tests
tests/rest/admin/test_user.py Add missing-user admin-login test
tests/replication/http/test__base.py Rename disconnect helper usage
tests/http/test_servlet.py Rename disconnect helper usage
tests/http/server/_base.py Rename helper to avoid pytest discovery
tests/handlers/test_room_member.py Update invite blocking constants/errcodes
tests/federation/transport/server/test__base.py Rename disconnect helper usage
synapse/util/wheel_timer.py Bucket size now Duration
synapse/util/clock.py Make sleep resilient to cancellation race
synapse/util/caches/response_cache.py Duration timeout + inflight pruning/cancel
synapse/util/caches/init.py Modernize Counter typing import
synapse/util/background_queue.py Yield periodically to avoid tight loop
synapse/util/async_helpers.py Observer removal on cancellation + helpers
synapse/types/handlers/sliding_sync.py Modernize ChainMap typing import
synapse/synapse_rust/msc4388_rendezvous.pyi New Rust handler type stubs
synapse/storage/databases/main/stats.py Modernize Counter import
synapse/storage/databases/main/roommember.py Await local event-cache fetch
synapse/storage/databases/main/events_worker.py Make local-cache fetch async + yielding
synapse/storage/databases/main/account_data.py MSC4380 invite config now stable key
synapse/storage/controllers/stats.py Modernize Counter import
synapse/server.py Wire MSC4388 rendezvous handler
synapse/rest/client/versions.py Advertise MSC4388; mark MSC4380 stable
synapse/rest/client/sync.py Mark sync servlet cancellable
synapse/rest/client/rendezvous.py Add MSC4388 rendezvous servlets
synapse/rest/admin/users.py Validate user exists before admin login-as
synapse/replication/http/_base.py ResponseCache timeout uses Duration
synapse/handlers/typing.py WheelTimer default Duration bucket size
synapse/handlers/sync.py Sync ResponseCache Duration + cancellation
synapse/handlers/sliding_sync/extensions.py Modernize ChainMap import
synapse/handlers/room_member_worker.py Add tracing decorators to RPC methods
synapse/handlers/room_member.py Add tracing tags + rename invite server var
synapse/handlers/room_list.py ResponseCache timeout uses Duration
synapse/handlers/room.py ResponseCache timeout uses Duration
synapse/handlers/device.py Log device deletion
synapse/federation/federation_server.py ResponseCache timeouts use Duration
synapse/event_auth.py Modernize ChainMap import
synapse/config/experimental.py Add MSC4388 config; drop MSC4380 flag
synapse/config/cache.py Sync cache duration becomes Duration
synapse/appservice/api.py ResponseCache timeout uses Duration
synapse/app/_base.py Log GC freeze rationale
synapse/api/errors.py Invite-blocked errcode becomes stable
synapse/api/constants.py Stable invite permission account data type
synapse/api/auth/msc3861_delegated.py ResponseCache timeout uses Duration
synapse/api/auth/mas.py ResponseCache timeout uses Duration
scripts-dev/complement.sh Use localhost image namespace for CI/dev
schema/synapse-config.schema.yaml Bump schema version id
rust/src/msc4388_rendezvous/session.rs MSC4388 session model/responses
rust/src/msc4388_rendezvous/mod.rs Rust MSC4388 handler implementation
rust/src/lib.rs Register MSC4388 rust module
rust/src/http_client.rs Rework response limiting/body handling
rust/src/errors.rs HttpResponseException now stores Bytes
rust/Cargo.toml Enable pyo3 bytes feature
pyproject.toml Version bump + opentelemetry updates + ruff config
docker/complement/conf/workers-shared-extra.yaml.j2 Enable MSC4222 in complement config
docker/README-testing.md Update local docker image tags
debian/changelog Add 1.149.1 packaging entry
Cargo.lock Dependency lock updates
CHANGES.md Add 1.149.1/1.149.0 release notes
.github/workflows/tests.yml Log docker system info in CI
.github/workflows/docker.yml Bump docker/login-action pin
.ci/scripts/calculate_builds.py Update modpack fcs version
Comments suppressed due to low confidence (1)

synapse/util/caches/response_cache.py:150

  • The docstring for ResponseCache.__init__ still refers to timeout_ms, but the parameter was renamed to timeout: Duration | None. Updating the docstring/arg docs would avoid confusion for future callers and maintainers.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@FrenchGithubUser FrenchGithubUser force-pushed the famedly-release/v1.149.1 branch from 422bd85 to 300aa6b Compare March 17, 2026 15:48
Copilot AI review requested due to automatic review settings March 17, 2026 15:55
@FrenchGithubUser FrenchGithubUser force-pushed the famedly-release/v1.149.1 branch from 300aa6b to 2b91d69 Compare March 17, 2026 15:55
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Release bump to Synapse v1.149.1 with Famedly downstream additions, plus upstream changes focused on improved request cancellation handling, response-cache behavior, and adding experimental MSC4388 rendezvous support (Rust-backed), alongside CI/docker/complement workflow adjustments.

Changes:

  • Add experimental MSC4388 rendezvous endpoint (Rust handler + Python servlet wiring) and related tests/config plumbing.
  • Rework cancellation semantics for ObservableDeferred and ResponseCache, including pruning/timeout behavior for inflight cached work.
  • Update various infra/release artifacts (Docker/Complement tooling, CI workflows, changelogs, dependency bumps) and multiple minor refactors (Duration-based timeouts, yielding in tight loops).

Reviewed changes

Copilot reviewed 66 out of 68 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tests/util/test_wheel_timer.py Updates WheelTimer tests to pass Duration bucket sizes.
tests/util/test_async_helpers.py Expands cancellation coverage for ObservableDeferred observers.
tests/util/caches/test_response_cache.py Adds extensive tests for ResponseCache cancellation/error/expiry behavior and updates to timeout: Duration.
tests/test_server.py Renames disconnect helper usage to avoid pytest discovery and updates assertions.
tests/synapse_rust/test_http_client.py Adds test ensuring response-size limiting triggers an error.
tests/rest/client/test_sync.py Adds sync cancellation integration tests via shared cancellation test helper.
tests/rest/client/test_msc4388_rendezvous.py Adds end-to-end tests for MSC4388 rendezvous modes, limits, eviction, and fetch-metadata header behavior.
tests/rest/admin/test_user.py Adds regression test for “login as user” when the user does not exist.
tests/replication/http/test__base.py Updates to renamed disconnect helper.
tests/http/test_servlet.py Updates to renamed disconnect helper.
tests/http/server/_base.py Renames test_disconnect helper and includes cancellation-testing utilities.
tests/handlers/test_room_member.py Updates invite blocking errcodes/account data type names and removes now-obsolete config gating.
tests/federation/transport/server/test__base.py Updates to renamed disconnect helper.
synapse/util/wheel_timer.py Changes WheelTimer bucket sizing to use Duration.
synapse/util/clock.py Adjusts Clock.sleep to tolerate waking cancelled Deferreds.
synapse/util/caches/response_cache.py Refactors ResponseCache to support cancellation-aware inflight pruning; switches API to `timeout: Duration
synapse/util/caches/init.py Updates Counter typing/imports.
synapse/util/background_queue.py Adds periodic yielding to reactor to avoid tight loops.
synapse/util/async_helpers.py Improves ObservableDeferred observer cancellation cleanup; adds observe_deferred.
synapse/types/handlers/sliding_sync.py Updates typing imports (ChainMap).
synapse/synapse_rust/msc4388_rendezvous.pyi Adds type stubs for Rust MSC4388 handler.
synapse/storage/databases/main/stats.py Updates Counter import typing.
synapse/storage/databases/main/roommember.py Awaits async local event-cache lookup.
synapse/storage/databases/main/events_worker.py Makes local event-cache lookup async and yields periodically to reduce reactor stalls.
synapse/storage/databases/main/account_data.py Treats MSC4380 invite config as stable account-data type and removes experimental gating.
synapse/storage/controllers/stats.py Updates Counter import typing.
synapse/server.py Wires new Rust MSC4388 rendezvous handler into HomeServer.
synapse/rest/client/versions.py Exposes MSC4388 capability and marks MSC4380 as stable; clarifies MSC4108 comment.
synapse/rest/client/sync.py Marks /sync servlet handler cancellable.
synapse/rest/client/rendezvous.py Registers MSC4388 rendezvous servlets and optional auth requirement behavior.
synapse/rest/admin/users.py Fixes admin “login as user” to validate user ID and ensure user exists before issuing token.
synapse/replication/http/_base.py Updates ResponseCache construction to timeout=Duration(...).
synapse/handlers/typing.py Adapts to WheelTimer default Duration bucket sizing.
synapse/handlers/sync.py Adapts ResponseCache timeout type; marks internal sync wait path cancellable; fixes state_after membership fetching logic.
synapse/handlers/sliding_sync/extensions.py Updates ChainMap import location.
synapse/handlers/room_member_worker.py Adds tracing decorators to remote membership operations.
synapse/handlers/room_member.py Adds additional tracing/tags; renames invite-server variable for clarity.
synapse/handlers/room_list.py Updates ResponseCache timeout usage to Duration.
synapse/handlers/room.py Updates ResponseCache timeout usage to Duration.
synapse/handlers/device.py Adds log line when deleting devices.
synapse/federation/federation_server.py Updates ResponseCache timeout usage to Duration.
synapse/event_auth.py Updates ChainMap import location.
synapse/config/experimental.py Adds MSC4388 config mode; removes MSC4380 experimental toggle.
synapse/config/cache.py Makes sync_response_cache_duration a Duration.
synapse/appservice/api.py Updates ResponseCache timeout usage to Duration.
synapse/app/_base.py Adds logging around GC freezing behavior.
synapse/api/errors.py Updates invite-blocked errcode to stable M_INVITE_BLOCKED.
synapse/api/constants.py Renames stable invite-permission account data type to m.invite_permission_config.
synapse/api/auth/msc3861_delegated.py Updates ResponseCache timeout usage to Duration.
synapse/api/auth/mas.py Updates ResponseCache timeout usage to Duration.
scripts-dev/complement.sh Namespaces local Docker images under localhost/... and adjusts Complement package selection.
schema/synapse-config.schema.yaml Updates schema $id for v1.149.1.
rust/src/msc4388_rendezvous/session.rs Implements MSC4388 rendezvous session model and responses in Rust.
rust/src/msc4388_rendezvous/mod.rs Implements MSC4388 rendezvous handler logic (limits, eviction, header checks) and Python bindings.
rust/src/lib.rs Registers new Rust MSC4388 module.
rust/src/http_client.rs Refactors response-body limiting/collection strategy; returns bytes::Bytes to Python.
rust/src/errors.rs Adjusts HttpResponseException constructor to accept bytes::Bytes.
rust/Cargo.toml Enables pyo3 bytes feature and adds http-body-util dependency usage.
pyproject.toml Bumps Synapse version and pinned OpenTelemetry dependency versions; adds Ruff config for immutable Duration calls.
docker/complement/conf/workers-shared-extra.yaml.j2 Enables MSC4222 in Complement worker shared config.
docker/README-testing.md Updates local docker image tagging instructions to localhost/....
debian/changelog Adds 1.149.1 release entry.
Cargo.lock Updates Rust dependency lockfile (incl. futures, anyhow, regex, etc.).
CHANGES.md Adds 1.149.1 changelog section and includes Famedly additions.
.github/workflows/tests.yml Logs docker system info in CI runs.
.github/workflows/docker.yml Bumps docker/login-action pin.
.ci/scripts/calculate_builds.py Updates modpack build matrix to mod022/mod023 and notes unreleased mod020/mod021.
Comments suppressed due to low confidence (1)

synapse/util/caches/response_cache.py:150

  • The __init__ docstring still documents timeout_ms, but the actual parameter is now timeout: Duration | None. Please update the docstring to match the new API so callers know what to pass and what None vs Duration(0) means.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@FrenchGithubUser FrenchGithubUser added this pull request to the merge queue Mar 17, 2026
Merged via the queue into master with commit 24f1cc4 Mar 17, 2026
65 of 70 checks passed
@FrenchGithubUser FrenchGithubUser deleted the famedly-release/v1.149.1 branch March 17, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.