From 70c6796b98a06adca969354b935589dc6664db7f Mon Sep 17 00:00:00 2001
From: Travis Ralston
Date: Mon, 30 Mar 2026 15:11:36 -0600
Subject: [PATCH 01/16] Increase timeout for policy server requests (#19629)
This is to accommodate media scanning and checking. Currently, a 3s
timeout means we make 2-5 requests before a media item is successfully
scanned.
Number chosen based on vibes and light real world testing.
Fixes https://github.com/matrix-org/policyserv/issues/108
### Pull Request Checklist
* [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))
---
changelog.d/19629.bugfix | 1 +
synapse/handlers/room_policy.py | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
create mode 100644 changelog.d/19629.bugfix
diff --git a/changelog.d/19629.bugfix b/changelog.d/19629.bugfix
new file mode 100644
index 0000000000..06a03d7819
--- /dev/null
+++ b/changelog.d/19629.bugfix
@@ -0,0 +1 @@
+Increase timeout for policy server requests to avoid repeated requests for checking media.
\ No newline at end of file
diff --git a/synapse/handlers/room_policy.py b/synapse/handlers/room_policy.py
index 57163c4344..fee3c6cfaf 100644
--- a/synapse/handlers/room_policy.py
+++ b/synapse/handlers/room_policy.py
@@ -228,7 +228,7 @@ class RoomPolicyHandler:
signature = await self._federation_client.ask_policy_server_to_sign_event(
policy_server.server_name,
event,
- timeout=3000,
+ timeout=30000,
)
# TODO: We can *probably* remove this when we remove unstable MSC4284 support.
# The server *should* be returning either a signature or an error, but there could
From 582f976d40733315b0b98a02eec75a5aa48162c4 Mon Sep 17 00:00:00 2001
From: Cadence Ember
Date: Tue, 31 Mar 2026 15:36:16 +1300
Subject: [PATCH 02/16] Unprefix room_version & encryption from hierarchy API
(#19576)
These seem to work properly in the hierarchy API so I figured I'd
unprefix them and remove the flag requirement. This should [better align
with the
spec](https://spec.matrix.org/latest/client-server-api/#get_matrixclientv1roomsroomidhierarchy_response-200_spacehierarchyroomschunk)
and Matrix v1.15 (via
[MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266)),
which says these properties are available and named like this.
Related to #18731.
This doesn't affect the stability or experimental flags of the room
summary API, just the hierarchy API.
---
changelog.d/19576.feature | 1 +
synapse/handlers/room_summary.py | 7 ++-----
2 files changed, 3 insertions(+), 5 deletions(-)
create mode 100644 changelog.d/19576.feature
diff --git a/changelog.d/19576.feature b/changelog.d/19576.feature
new file mode 100644
index 0000000000..e346c71720
--- /dev/null
+++ b/changelog.d/19576.feature
@@ -0,0 +1 @@
+Stabilize `room_version` and `encryption` fields in the space/room `/hierarchy` API (part of [MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266)).
\ No newline at end of file
diff --git a/synapse/handlers/room_summary.py b/synapse/handlers/room_summary.py
index 9ec0d33f11..bbcdc0877e 100644
--- a/synapse/handlers/room_summary.py
+++ b/synapse/handlers/room_summary.py
@@ -128,7 +128,6 @@ class RoomSummaryHandler:
name="get_room_hierarchy",
server_name=self.server_name,
)
- self._msc3266_enabled = hs.config.experimental.msc3266_enabled
async def get_room_hierarchy(
self,
@@ -791,6 +790,7 @@ class RoomSummaryHandler:
entry: JsonDict = {
"room_id": stats.room_id,
+ "room_version": stats.version,
"name": stats.name,
"topic": stats.topic,
"canonical_alias": stats.canonical_alias,
@@ -802,12 +802,9 @@ class RoomSummaryHandler:
),
"guest_can_join": stats.guest_access == "can_join",
"room_type": stats.room_type,
+ "encryption": stats.encryption,
}
- if self._msc3266_enabled:
- entry["im.nheko.summary.version"] = stats.version
- entry["im.nheko.summary.encryption"] = stats.encryption
-
# Federation requests need to provide additional information so the
# requested server is able to filter the response appropriately.
if for_federation:
From 4fc1b92853bb0b68de5c50bac06a54dcacdb73c6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 11:47:08 +0200
Subject: [PATCH 03/16] Bump actions/download-artifact from 7.0.0 to 8.0.1
(#19626)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps
[actions/download-artifact](https://github.com/actions/download-artifact)
from 7.0.0 to 8.0.1.
Release notes
Sourced from actions/download-artifact's
releases.
v8.0.1
What's Changed
Full Changelog: https://github.com/actions/download-artifact/compare/v8...v8.0.1
v8.0.0
v8 - What's new
[!IMPORTANT]
actions/download-artifact@v8 has been migrated to an ESM module. This
should be transparent to the caller but forks might need to make
significant changes.
[!IMPORTANT]
Hash mismatches will now error by default. Users can override this
behavior with a setting change (see below).
Direct downloads
To support direct uploads in actions/upload-artifact,
the action will no longer attempt to unzip all downloaded files.
Instead, the action checks the Content-Type header ahead of
unzipping and skips non-zipped files. Callers wishing to download a
zipped file as-is can also set the new skip-decompress
parameter to true.
Enforced checks (breaking)
A previous release introduced digest checks on the download. If a
download hash didn't match the expected hash from the server, the action
would log a warning. Callers can now configure the behavior on mismatch
with the digest-mismatch parameter. To be secure by
default, we are now defaulting the behavior to error which
will fail the workflow run.
ESM
To support new versions of the @actions/* packages, we've upgraded
the package to ESM.
What's Changed
Full Changelog: https://github.com/actions/download-artifact/compare/v7...v8.0.0
Commits
3e5f45b
Add regression tests for CJK characters (#471)
e6d03f6
Add a regression test for artifact name + content-type mismatches (#472)
70fc10c
Merge pull request #461
from actions/danwkennedy/digest-mismatch-behavior
f258da9
Add change docs
ccc058e
Fix linting issues
bd7976b
Add a setting to specify what to do on hash mismatch and default it to
error
ac21fcf
Merge pull request #460
from actions/danwkennedy/download-no-unzip
15999bf
Add note about package bumps
974686e
Bump the version to v8 and add release notes
fbe48b1
Update test names to make it clearer what they do
- Additional commits viewable in compare
view
[](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)
---
Dependabot commands and options
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 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)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/docker.yml | 2 +-
.github/workflows/release-artifacts.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index d581b5ec56..da9cd02c78 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -129,7 +129,7 @@ jobs:
- build
steps:
- name: Download digests
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
diff --git a/.github/workflows/release-artifacts.yml b/.github/workflows/release-artifacts.yml
index 95d3d98d75..c313a64250 100644
--- a/.github/workflows/release-artifacts.yml
+++ b/.github/workflows/release-artifacts.yml
@@ -187,7 +187,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download all workflow run artifacts
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
- name: Build a tarball for the debs
# We need to merge all the debs uploads into one folder, then compress
# that.
From 90449b915d17131e42d1b3963389c9a05cadc813 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 11:47:55 +0200
Subject: [PATCH 04/16] Bump the minor-and-patches group with 2 updates
(#19624)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the minor-and-patches group with 2 updates:
[tailscale/github-action](https://github.com/tailscale/github-action)
and [Swatinem/rust-cache](https://github.com/swatinem/rust-cache).
Updates `tailscale/github-action` from 4.1.1 to 4.1.2
Release notes
Sourced from tailscale/github-action's
releases.
v4.1.2
What's Changed
New Contributors
Full Changelog: https://github.com/tailscale/github-action/compare/v4.1.1...v4.1.2
Commits
306e68a
Bump @actions/cache from 5.0.1 to 5.0.2
989d9be
Bump @actions/tool-cache from 2.0.2 to 3.0.0
69584d7
Bump @actions/github from 6.0.1 to 7.0.0
cda17d5
Bump @actions/core from 2.0.1 to 2.0.2
81231eb
Bump actions/setup-node from 6.2.0 to 6.3.0
48c6d03
action,dist,src: bump default version to 1.94.2
cfed5b8
store tailscale.tgz and tailscaled.pid in XDG cache/runtime dirs instead
of t...
31d93e6
.github/workflows: run integration test if event is a push
564fe38
chore: run make build to resolve linter error
127dade
fix: add missing parentheses to core.isDebug()
- Additional commits viewable in compare
view
Updates `Swatinem/rust-cache` from 2.8.2 to 2.9.1
Release notes
Sourced from Swatinem/rust-cache's
releases.
v2.9.1
Fix regression in hash calculation
Full Changelog: https://github.com/Swatinem/rust-cache/compare/v2.9.0...v2.9.1
v2.9.0
What's Changed
New Contributors
Full Changelog: https://github.com/Swatinem/rust-cache/compare/v2.8.2...v2.9.0
Changelog
Sourced from Swatinem/rust-cache's
changelog.
Changelog
2.9.1
- Fix regression in hash calculation
2.9.0
- Update to
node24
- Support running from within a
nix shell
- Consider all installed toolchains for cache key
- Use case-insensitive comparison to determine exact cache hit
2.8.2
- Don't overwrite env for cargo-metadata call
2.8.1
- Set empty
CARGO_ENCODED_RUSTFLAGS when retrieving
metadata
- Various dependency updates
2.8.0
- Add support for
warpbuild cache provider
- Add new
cache-workspace-crates feature
2.7.8
- Include CPU arch in the cache key
2.7.7
- Also cache
cargo install metadata
2.7.6
- Allow opting out of caching $CARGO_HOME/bin
- Add runner OS in cache key
- Adds an option to do lookup-only of the cache
2.7.5
- Support Cargo.lock format cargo-lock v4
- Only run macOsWorkaround() on macOS
2.7.3
- Work around upstream problem that causes cache saving to hang for
minutes.
... (truncated)
Commits
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)
---
Dependabot commands and options
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 ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore 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 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 ` 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 ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/docker.yml | 4 ++--
.github/workflows/fix_lint.yaml | 2 +-
.github/workflows/latest_deps.yml | 6 +++---
.github/workflows/tests.yml | 24 ++++++++++++------------
.github/workflows/twisted_trunk.yml | 6 +++---
5 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index da9cd02c78..051c66ebba 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -54,7 +54,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Tailscale
- uses: tailscale/github-action@53acf823325fe9ca47f4cdaa951f90b4b0de5bb9 # v4.1.1
+ uses: tailscale/github-action@306e68a486fd2350f2bfc3b19fcd143891a4a2d8 # v4.1.2
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
audience: ${{ secrets.TS_AUDIENCE }}
@@ -151,7 +151,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Tailscale
- uses: tailscale/github-action@53acf823325fe9ca47f4cdaa951f90b4b0de5bb9 # v4.1.1
+ uses: tailscale/github-action@306e68a486fd2350f2bfc3b19fcd143891a4a2d8 # v4.1.2
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
audience: ${{ secrets.TS_AUDIENCE }}
diff --git a/.github/workflows/fix_lint.yaml b/.github/workflows/fix_lint.yaml
index 4752b6afeb..aea55fe0ce 100644
--- a/.github/workflows/fix_lint.yaml
+++ b/.github/workflows/fix_lint.yaml
@@ -25,7 +25,7 @@ jobs:
with:
toolchain: ${{ env.RUST_VERSION }}
components: clippy, rustfmt
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- name: Setup Poetry
uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
diff --git a/.github/workflows/latest_deps.yml b/.github/workflows/latest_deps.yml
index a85bad9d74..746223ef4a 100644
--- a/.github/workflows/latest_deps.yml
+++ b/.github/workflows/latest_deps.yml
@@ -47,7 +47,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
# The dev dependencies aren't exposed in the wheel metadata (at least with current
# poetry-core versions), so we install with poetry.
@@ -83,7 +83,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- run: sudo apt-get -qq install xmlsec1
- name: Set up PostgreSQL ${{ matrix.postgres-version }}
@@ -157,7 +157,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- name: Ensure sytest runs `pip install`
# Delete the lockfile so sytest will `pip install` rather than `poetry install`
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index c3dd8b14e5..4ec4df96e4 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -91,7 +91,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
python-version: "3.x"
@@ -157,7 +157,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- name: Setup Poetry
uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
@@ -221,7 +221,7 @@ jobs:
with:
components: clippy
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- run: cargo clippy -- -D warnings
@@ -240,7 +240,7 @@ jobs:
with:
toolchain: nightly-2026-02-01
components: clippy
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- run: cargo clippy --all-features -- -D warnings
@@ -257,7 +257,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- name: Setup Poetry
uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
@@ -296,7 +296,7 @@ jobs:
# `.rustfmt.toml`.
toolchain: nightly-2025-04-23
components: rustfmt
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- run: cargo fmt --check
@@ -393,7 +393,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
@@ -437,7 +437,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
# There aren't wheels for some of the older deps, so we need to install
# their build dependencies
@@ -552,7 +552,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- name: Run SyTest
run: /bootstrap.sh synapse
@@ -703,7 +703,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
# We use `poetry` in `complement.sh`
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
@@ -822,7 +822,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- run: cargo test
@@ -842,7 +842,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: nightly-2022-12-01
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- run: cargo bench --no-run
diff --git a/.github/workflows/twisted_trunk.yml b/.github/workflows/twisted_trunk.yml
index e39d64cfb2..be73e5283b 100644
--- a/.github/workflows/twisted_trunk.yml
+++ b/.github/workflows/twisted_trunk.yml
@@ -48,7 +48,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
@@ -76,7 +76,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- uses: matrix-org/setup-python-poetry@5bbf6603c5c930615ec8a29f1b5d7d258d905aa4 # v2.0.0
with:
@@ -121,7 +121,7 @@ jobs:
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # master
with:
toolchain: ${{ env.RUST_VERSION }}
- - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
- name: Patch dependencies
# Note: The poetry commands want to create a virtualenv in /src/.venv/,
From ec4b050bfbec0da72badee4c54304b2cc9b0408a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 10:09:03 +0000
Subject: [PATCH 05/16] Bump requests from 2.32.5 to 2.33.0 (#19610)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.0.
Release notes
Sourced from requests's
releases.
v2.33.0
2.33.0 (2026-03-25)
Announcements
- 📣 Requests is adding inline types. If you have a typed code base
that uses Requests, please take a look at #7271.
Give it a try, and report any gaps or feedback you may have in the
issue. 📣
Security
- CVE-2026-25645
requests.utils.extract_zipped_paths now
extracts contents to a non-deterministic location to prevent malicious
file replacement. This does not affect default usage of Requests, only
applications calling the utility function directly.
Improvements
- Migrated to a PEP 517 build system using setuptools. (#7012)
Bugfixes
- Fixed an issue where an empty netrc entry could cause malformed
authentication to be applied to Requests on Python 3.11+. (#7205)
Deprecations
- Dropped support for Python 3.9 following its end of support. (#7196)
Documentation
- Various typo fixes and doc improvements.
New Contributors
Full Changelog: https://github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25
Changelog
Sourced from requests's
changelog.
2.33.0 (2026-03-25)
Announcements
- 📣 Requests is adding inline types. If you have a typed code base
that
uses Requests, please take a look at #7271.
Give it a try, and report
any gaps or feedback you may have in the issue. 📣
Security
- CVE-2026-25645
requests.utils.extract_zipped_paths now
extracts
contents to a non-deterministic location to prevent malicious file
replacement. This does not affect default usage of Requests, only
applications calling the utility function directly.
Improvements
- Migrated to a PEP 517 build system using setuptools. (#7012)
Bugfixes
- Fixed an issue where an empty netrc entry could cause
malformed authentication to be applied to Requests on
Python 3.11+. (#7205)
Deprecations
- Dropped support for Python 3.9 following its end of support. (#7196)
Documentation
- Various typo fixes and doc improvements.
Commits
bc04dfd
v2.33.0
66d21cb
Merge commit from fork
8b9bc8f
Move badges to top of README (#7293)
e331a28
Remove unused extraction call (#7292)
753fd08
docs: fix FAQ grammar in httplib2 example
774a0b8
docs(socks): same block as other sections
9c72a41
Bump github/codeql-action from 4.33.0 to 4.34.1
ebf7190
Bump github/codeql-action from 4.32.0 to 4.33.0
0e4ae38
docs: exclude Response.is_permanent_redirect from API docs (#7244)
d568f47
docs: clarify Quickstart POST example (#6960)
- Additional commits viewable in compare
view
[](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)
---
Dependabot commands and options
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 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).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 36d3035277..b6266bfb84 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2674,25 +2674,26 @@ typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""}
[[package]]
name = "requests"
-version = "2.32.5"
+version = "2.33.0"
description = "Python HTTP for Humans."
optional = false
-python-versions = ">=3.9"
+python-versions = ">=3.10"
groups = ["main", "dev"]
files = [
- {file = "requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6"},
- {file = "requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"},
+ {file = "requests-2.33.0-py3-none-any.whl", hash = "sha256:3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b"},
+ {file = "requests-2.33.0.tar.gz", hash = "sha256:c7ebc5e8b0f21837386ad0e1c8fe8b829fa5f544d8df3b2253bff14ef29d7652"},
]
[package.dependencies]
-certifi = ">=2017.4.17"
+certifi = ">=2023.5.7"
charset_normalizer = ">=2,<4"
idna = ">=2.5,<4"
-urllib3 = ">=1.21.1,<3"
+urllib3 = ">=1.26,<3"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
-use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+test = ["PySocks (>=1.5.6,!=1.5.7)", "pytest (>=3)", "pytest-cov", "pytest-httpbin (==2.1.0)", "pytest-mock", "pytest-xdist"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<8)"]
[[package]]
name = "requests-toolbelt"
From 84b3e5aa24555fab34be8ec761cad04b21f8c05f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 10:20:36 +0000
Subject: [PATCH 06/16] Bump dorny/paths-filter from 3.0.2 to 4.0.1 (#19625)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from
3.0.2 to 4.0.1.
Release notes
Sourced from dorny/paths-filter's
releases.
v4.0.1
What's Changed
New Contributors
Full Changelog: https://github.com/dorny/paths-filter/compare/v4.0.0...v4.0.1
v4.0.0
What's Changed
New Contributors
Full Changelog: https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0
v3.0.3
What's Changed
New Contributors
Full Changelog: https://github.com/dorny/paths-filter/compare/v3...v3.0.3
Changelog
Sourced from dorny/paths-filter's
changelog.
Changelog
v4.0.0
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.1
v2.11.0
v2.10.2
v2.10.1
v2.10.0
v2.9.3
v2.9.2
v2.9.1
v2.9.0
... (truncated)
Commits
fbd0ab8
feat: add merge_group event support
efb1da7
feat: add dist/ freshness check to PR workflow
d8f7b06
Merge pull request #302
from dorny/issue-299
addbc14
Update README for v4
9d7afb8
Update CHANGELOG for v4.0.0
782470c
Merge branch 'releases/v3'
d1c1ffe
Update CHANGELOG for v3.0.3
ce10459
Merge pull request #294
from saschabratton/master
5f40380
feat: update action runtime to node24
668c092
Merge pull request #279
from wardpeet/patch-1
- Additional commits viewable in compare
view
[](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)
---
Dependabot commands and options
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 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)
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/tests.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 4ec4df96e4..488208291f 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -26,7 +26,7 @@ jobs:
linting: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.linting }}
linting_readme: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.linting_readme }}
steps:
- - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+ - uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
id: filter
# We only check on PRs
if: startsWith(github.ref, 'refs/pull/')
From df1752ee7977eb52e8f6e69114250bfd80a71c1e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 10:21:37 +0000
Subject: [PATCH 07/16] Bump cryptography from 46.0.5 to 46.0.6 (#19622)
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.5
to 46.0.6.
Changelog
Sourced from cryptography's
changelog.
46.0.6 - 2026-03-25
* **SECURITY ISSUE**: Fixed a bug where name constraints were not
applied
to peer names during verification when the leaf certificate contains a
wildcard DNS SAN. Ordinary X.509 topologies are not affected by this
bug,
including those used by the Web PKI. Credit to **Oleh Konko (1seal)**
for
reporting the issue. **CVE-2026-34073**
.. _v46-0-5:
Commits
[](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)
---
Dependabot commands and options
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 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).
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 102 ++++++++++++++++++++++++++--------------------------
1 file changed, 51 insertions(+), 51 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index b6266bfb84..89d470a165 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -453,61 +453,61 @@ files = [
[[package]]
name = "cryptography"
-version = "46.0.5"
+version = "46.0.6"
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
optional = false
python-versions = "!=3.9.0,!=3.9.1,>=3.8"
groups = ["main", "dev"]
files = [
- {file = "cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0"},
- {file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731"},
- {file = "cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82"},
- {file = "cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1"},
- {file = "cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48"},
- {file = "cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4"},
- {file = "cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0"},
- {file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663"},
- {file = "cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826"},
- {file = "cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d"},
- {file = "cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a"},
- {file = "cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4"},
- {file = "cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d"},
- {file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c"},
- {file = "cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4"},
- {file = "cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9"},
- {file = "cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72"},
- {file = "cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595"},
- {file = "cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c"},
- {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a"},
- {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356"},
- {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da"},
- {file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257"},
- {file = "cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7"},
- {file = "cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d"},
+ {file = "cryptography-46.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:64235194bad039a10bb6d2d930ab3323baaec67e2ce36215fd0952fad0930ca8"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:26031f1e5ca62fcb9d1fcb34b2b60b390d1aacaa15dc8b895a9ed00968b97b30"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9a693028b9cbe51b5a1136232ee8f2bc242e4e19d456ded3fa7c86e43c713b4a"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:67177e8a9f421aa2d3a170c3e56eca4e0128883cf52a071a7cbf53297f18b175"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d9528b535a6c4f8ff37847144b8986a9a143585f0540fbcb1a98115b543aa463"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:22259338084d6ae497a19bae5d4c66b7ca1387d3264d1c2c0e72d9e9b6a77b97"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:760997a4b950ff00d418398ad73fbc91aa2894b5c1db7ccb45b4f68b42a63b3c"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3dfa6567f2e9e4c5dceb8ccb5a708158a2a871052fa75c8b78cb0977063f1507"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:cdcd3edcbc5d55757e5f5f3d330dd00007ae463a7e7aa5bf132d1f22a4b62b19"},
+ {file = "cryptography-46.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:d4e4aadb7fc1f88687f47ca20bb7227981b03afaae69287029da08096853b738"},
+ {file = "cryptography-46.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2b417edbe8877cda9022dde3a008e2deb50be9c407eef034aeeb3a8b11d9db3c"},
+ {file = "cryptography-46.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:380343e0653b1c9d7e1f55b52aaa2dbb2fdf2730088d48c43ca1c7c0abb7cc2f"},
+ {file = "cryptography-46.0.6-cp311-abi3-win32.whl", hash = "sha256:bcb87663e1f7b075e48c3be3ecb5f0b46c8fc50b50a97cf264e7f60242dca3f2"},
+ {file = "cryptography-46.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:6739d56300662c468fddb0e5e291f9b4d084bead381667b9e654c7dd81705124"},
+ {file = "cryptography-46.0.6-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:2ef9e69886cbb137c2aef9772c2e7138dc581fad4fcbcf13cc181eb5a3ab6275"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7f417f034f91dcec1cb6c5c35b07cdbb2ef262557f701b4ecd803ee8cefed4f4"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d24c13369e856b94892a89ddf70b332e0b70ad4a5c43cf3e9cb71d6d7ffa1f7b"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:aad75154a7ac9039936d50cf431719a2f8d4ed3d3c277ac03f3339ded1a5e707"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:3c21d92ed15e9cfc6eb64c1f5a0326db22ca9c2566ca46d845119b45b4400361"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:4668298aef7cddeaf5c6ecc244c2302a2b8e40f384255505c22875eebb47888b"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:8ce35b77aaf02f3b59c90b2c8a05c73bac12cea5b4e8f3fbece1f5fddea5f0ca"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:c89eb37fae9216985d8734c1afd172ba4927f5a05cfd9bf0e4863c6d5465b013"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:ed418c37d095aeddf5336898a132fba01091f0ac5844e3e8018506f014b6d2c4"},
+ {file = "cryptography-46.0.6-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:69cf0056d6947edc6e6760e5f17afe4bea06b56a9ac8a06de9d2bd6b532d4f3a"},
+ {file = "cryptography-46.0.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e7304c4f4e9490e11efe56af6713983460ee0780f16c63f219984dab3af9d2d"},
+ {file = "cryptography-46.0.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b928a3ca837c77a10e81a814a693f2295200adb3352395fad024559b7be7a736"},
+ {file = "cryptography-46.0.6-cp314-cp314t-win32.whl", hash = "sha256:97c8115b27e19e592a05c45d0dd89c57f81f841cc9880e353e0d3bf25b2139ed"},
+ {file = "cryptography-46.0.6-cp314-cp314t-win_amd64.whl", hash = "sha256:c797e2517cb7880f8297e2c0f43bb910e91381339336f75d2c1c2cbf811b70b4"},
+ {file = "cryptography-46.0.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:12cae594e9473bca1a7aceb90536060643128bb274fcea0fc459ab90f7d1ae7a"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:639301950939d844a9e1c4464d7e07f902fe9a7f6b215bb0d4f28584729935d8"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ed3775295fb91f70b4027aeba878d79b3e55c0b3e97eaa4de71f8f23a9f2eb77"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8927ccfbe967c7df312ade694f987e7e9e22b2425976ddbf28271d7e58845290"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b12c6b1e1651e42ab5de8b1e00dc3b6354fdfd778e7fa60541ddacc27cd21410"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:063b67749f338ca9c5a0b7fe438a52c25f9526b851e24e6c9310e7195aad3b4d"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:02fad249cb0e090b574e30b276a3da6a149e04ee2f049725b1f69e7b8351ec70"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e6142674f2a9291463e5e150090b95a8519b2fb6e6aaec8917dd8d094ce750d"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:456b3215172aeefb9284550b162801d62f5f264a081049a3e94307fe20792cfa"},
+ {file = "cryptography-46.0.6-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:341359d6c9e68834e204ceaf25936dffeafea3829ab80e9503860dcc4f4dac58"},
+ {file = "cryptography-46.0.6-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9a9c42a2723999a710445bc0d974e345c32adfd8d2fac6d8a251fa829ad31cfb"},
+ {file = "cryptography-46.0.6-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6617f67b1606dfd9fe4dbfa354a9508d4a6d37afe30306fe6c101b7ce3274b72"},
+ {file = "cryptography-46.0.6-cp38-abi3-win32.whl", hash = "sha256:7f6690b6c55e9c5332c0b59b9c8a3fb232ebf059094c17f9019a51e9827df91c"},
+ {file = "cryptography-46.0.6-cp38-abi3-win_amd64.whl", hash = "sha256:79e865c642cfc5c0b3eb12af83c35c5aeff4fa5c672dc28c43721c2c9fdd2f0f"},
+ {file = "cryptography-46.0.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:2ea0f37e9a9cf0df2952893ad145fd9627d326a59daec9b0802480fa3bcd2ead"},
+ {file = "cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a3e84d5ec9ba01f8fd03802b2147ba77f0c8f2617b2aff254cedd551844209c8"},
+ {file = "cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:12f0fa16cc247b13c43d56d7b35287ff1569b5b1f4c5e87e92cc4fcc00cd10c0"},
+ {file = "cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:50575a76e2951fe7dbd1f56d181f8c5ceeeb075e9ff88e7ad997d2f42af06e7b"},
+ {file = "cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:90e5f0a7b3be5f40c3a0a0eafb32c681d8d2c181fc2a1bdabe9b3f611d9f6b1a"},
+ {file = "cryptography-46.0.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6728c49e3b2c180ef26f8e9f0a883a2c585638db64cf265b49c9ba10652d430e"},
+ {file = "cryptography-46.0.6.tar.gz", hash = "sha256:27550628a518c5c6c903d84f637fbecf287f6cb9ced3804838a1295dc1fd0759"},
]
[package.dependencies]
@@ -521,7 +521,7 @@ nox = ["nox[uv] (>=2024.4.15)"]
pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.14)", "ruff (>=0.11.11)"]
sdist = ["build (>=1.0.0)"]
ssh = ["bcrypt (>=3.1.5)"]
-test = ["certifi (>=2024)", "cryptography-vectors (==46.0.5)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
+test = ["certifi (>=2024)", "cryptography-vectors (==46.0.6)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
test-randomorder = ["pytest-randomly"]
[[package]]
From 0ac72bc55ef0936bc08179e61a37bdaa19e521d8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 11:33:34 +0000
Subject: [PATCH 08/16] Bump phonenumbers from 9.0.25 to 9.0.26 in the
minor-and-patches group (#19627)
Bumps the minor-and-patches group with 1 update:
[phonenumbers](https://github.com/daviddrysdale/python-phonenumbers).
Updates `phonenumbers` from 9.0.25 to 9.0.26
Commits
[](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)
---
Dependabot commands and options
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 ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore 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 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 ` 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 ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 89d470a165..06746a8a6f 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1889,14 +1889,14 @@ tests = ["pytest (>=9)", "typing-extensions (>=4.15)"]
[[package]]
name = "phonenumbers"
-version = "9.0.25"
+version = "9.0.26"
description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers."
optional = false
python-versions = ">=2.5"
groups = ["main"]
files = [
- {file = "phonenumbers-9.0.25-py2.py3-none-any.whl", hash = "sha256:b1fd6c20d588f5bcd40af3899d727a9f536364211ec6eac554fcd75ca58992a3"},
- {file = "phonenumbers-9.0.25.tar.gz", hash = "sha256:a5f236fa384c6a77378d7836c8e486ade5f984ad2e8e6cc0dbe5124315cdc81b"},
+ {file = "phonenumbers-9.0.26-py2.py3-none-any.whl", hash = "sha256:ff473da5712965b6c7f7a31cbff8255864df694eb48243771133ecb761e807c1"},
+ {file = "phonenumbers-9.0.26.tar.gz", hash = "sha256:9e582c827f0f5503cddeebef80099475a52ffa761551d8384099c7ec71298cbf"},
]
[[package]]
From 51aa319463210960310655cfdbca1ea5c409f73c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 11:45:52 +0000
Subject: [PATCH 09/16] Bump once_cell from 1.21.3 to 1.21.4 in the patches
group (#19623)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bumps the patches group with 1 update:
[once_cell](https://github.com/matklad/once_cell).
Updates `once_cell` from 1.21.3 to 1.21.4
Changelog
Sourced from once_cell's
changelog.
1.21.4
-
Fix unsoundness in OnceCell::wait under
--features=parking_lot, #295.
If thread A calls wait, while thread B calls
get_or_try_init(f), and, furthermore, f
panics,
the wait incorrectly returns and thread A observes
uninitialized memory.
Kudos to @meng-xu-cs for a
nice find!
Commits
80fe900
Merge pull request #296
from matklad/matklad/plfix
a5e09c9
release 1.21.4
2426d45
Merge pull request #295
from matklad/matklad/plfix
a144121
Merge pull request #290
from alexanderkjall/run-tests-with-no-default-features
232a1a4
Merge pull request #292
from phil-opp/doc-fix
d31767b
fix OnceCell::wait with features=parking_lot
28d29ae
Fix: sync::OnceCell::try_insert docs should import
sync variant
0f78fb0
make the command 'cargo test --no-default-features' work
fda60a6
Merge pull request #287
from AbeZbm/add-tests
b5b98c0
Add tests for OnceRef
- See full diff in compare
view
[](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)
---
Dependabot commands and options
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 ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore 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 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 ` 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 ` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore ` will
remove the ignore condition of the specified dependency and ignore
conditions
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
Cargo.lock | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index a004747af5..5cb2ab58af 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -748,9 +748,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.21.3"
+version = "1.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]]
name = "openssl-probe"
From b0fc0b7a612a42e6f15b87dee2a1db4c383645fb Mon Sep 17 00:00:00 2001
From: Eric Eastwood
Date: Tue, 31 Mar 2026 07:14:27 -0500
Subject: [PATCH 10/16] Lower the database `statement_timeout` to 10m (#19604)
Lower the database `statement_timeout` to 10m
Part of https://github.com/element-hq/backend-internal/issues/223
The `statement_timeout` was first introduced in
https://github.com/matrix-org/synapse/pull/15853 as a great sanity check
starting point (any timeout is better than no timeout).
This idea is spawning from [discussions on
2026-03-16](https://docs.google.com/document/d/12RZKPk3a4__JUSH9wYHODo9rRyKzsHg6BSCAcmqmbOU/edit?tab=t.0#bookmark=id.x9y4kx82lvaj)
about `matrix.org` performance and specifically room event search which
frequently causes long-running transactions that hold up vacuums and
causes things to go wibbly. It was brought up again today in another
`matrix.org` performance [discussion on
2026-03-25](https://docs.google.com/document/d/15h4901gAzGMAol2n1b71OAcesVMNhgQbPNb55xouluw/edit?tab=t.0#bookmark=id.b53a918ntk0j)
and was surprised nothing came of this yet.
### Some things may break
We expect that when/if things break, to add specific overrides where it
matters. For reference, we already have a couple of overrides in the
codebase:
- When using
[`create_index_in_background`](https://github.com/element-hq/synapse/blob/40d35a95e2ce56982f839f2d5f01bdad34e65453/synapse/storage/background_updates.py#L802-L804)
- When [purging
rooms](https://github.com/element-hq/synapse/blob/40d35a95e2ce56982f839f2d5f01bdad34e65453/synapse/storage/databases/main/purge_events.py#L166-L169)
### Going further
Ideally, we could go even further. The `statement_timeout` for any
database query coming from people's HTTP requests should be 60s or less
(or lower, no one wants to wait that long anyway). For now we'll take
this iterative step down to 10m. Another point of reference is that for
example on `matrix.org`, we even time out the whole HTTP request after
180s.
For reference, we also discussed propagating request cancellation to the
database query (cancelling statements when the user goes away) which is
a good additional thing we could do. @sandhose looked into this before
and it is only a recent libpq / Postgres / psycopg3 feature, not
available in psycopg2 (which we currently use). As an example of how
weird cancellation can get, `psql` will spawn a new connection to
`SELECT pg_cancel_backend();` when you `Ctrl+C`, see
https://neon.com/blog/ctrl-c-in-psql-gives-me-the-heebie-jeebies
### Pull Request Checklist
* [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))
---
changelog.d/19604.misc | 1 +
synapse/storage/engines/postgres.py | 8 +++++---
2 files changed, 6 insertions(+), 3 deletions(-)
create mode 100644 changelog.d/19604.misc
diff --git a/changelog.d/19604.misc b/changelog.d/19604.misc
new file mode 100644
index 0000000000..65081117d6
--- /dev/null
+++ b/changelog.d/19604.misc
@@ -0,0 +1 @@
+Lower the Postgres database `statement_timeout` to 10m (previously 1h).
diff --git a/synapse/storage/engines/postgres.py b/synapse/storage/engines/postgres.py
index 03ecff27f0..7cd50fb8f1 100644
--- a/synapse/storage/engines/postgres.py
+++ b/synapse/storage/engines/postgres.py
@@ -31,6 +31,7 @@ from synapse.storage.engines._base import (
IsolationLevel,
)
from synapse.storage.types import Cursor
+from synapse.util.duration import Duration
if TYPE_CHECKING:
from synapse.storage.database import LoggingDatabaseConnection
@@ -54,14 +55,15 @@ class PostgresEngine(
psycopg2.extensions.register_adapter(bytes, _disable_bytes_adapter)
self.synchronous_commit: bool = database_config.get("synchronous_commit", True)
- # Set the statement timeout to 1 hour by default.
- # Any query taking more than 1 hour should probably be considered a bug;
+ # Set the statement timeout to 10 minutes by default.
+ #
+ # Any query taking more than 10 minutes should probably be considered a bug;
# most of the time this is a sign that work needs to be split up or that
# some degenerate query plan has been created and the client has probably
# timed out/walked off anyway.
# This is in milliseconds.
self.statement_timeout: int | None = database_config.get(
- "statement_timeout", 60 * 60 * 1000
+ "statement_timeout", Duration(minutes=10).as_millis()
)
self._version: int | None = None # unknown as yet
From 72711a33290c0172d1f313348633f803ba5fb456 Mon Sep 17 00:00:00 2001
From: Quentin Gliech
Date: Tue, 31 Mar 2026 14:24:05 +0200
Subject: [PATCH 11/16] 1.151.0rc1
---
CHANGES.md | 39 +++++++++++++++++++++++++++++++
changelog.d/19430.removal | 1 -
changelog.d/19503.bugfix.1 | 1 -
changelog.d/19503.bugfix.2 | 1 -
changelog.d/19503.feature | 1 -
changelog.d/19509.bugfix | 1 -
changelog.d/19511.feature | 1 -
changelog.d/19538.misc | 1 -
changelog.d/19559.bugfix | 1 -
changelog.d/19573.feature | 1 -
changelog.d/19576.feature | 1 -
changelog.d/19577.misc | 1 -
changelog.d/19578.bugfix | 1 -
changelog.d/19581.misc | 1 -
changelog.d/19585.misc | 1 -
changelog.d/19586.feature | 1 -
changelog.d/19589.misc | 1 -
changelog.d/19590.misc | 1 -
changelog.d/19592.misc | 1 -
changelog.d/19602.misc.1 | 1 -
changelog.d/19602.misc.2 | 1 -
changelog.d/19604.misc | 1 -
changelog.d/19629.bugfix | 1 -
debian/changelog | 6 +++++
pyproject.toml | 2 +-
schema/synapse-config.schema.yaml | 2 +-
26 files changed, 47 insertions(+), 24 deletions(-)
delete mode 100644 changelog.d/19430.removal
delete mode 100644 changelog.d/19503.bugfix.1
delete mode 100644 changelog.d/19503.bugfix.2
delete mode 100644 changelog.d/19503.feature
delete mode 100644 changelog.d/19509.bugfix
delete mode 100644 changelog.d/19511.feature
delete mode 100644 changelog.d/19538.misc
delete mode 100644 changelog.d/19559.bugfix
delete mode 100644 changelog.d/19573.feature
delete mode 100644 changelog.d/19576.feature
delete mode 100644 changelog.d/19577.misc
delete mode 100644 changelog.d/19578.bugfix
delete mode 100644 changelog.d/19581.misc
delete mode 100644 changelog.d/19585.misc
delete mode 100644 changelog.d/19586.feature
delete mode 100644 changelog.d/19589.misc
delete mode 100644 changelog.d/19590.misc
delete mode 100644 changelog.d/19592.misc
delete mode 100644 changelog.d/19602.misc.1
delete mode 100644 changelog.d/19602.misc.2
delete mode 100644 changelog.d/19604.misc
delete mode 100644 changelog.d/19629.bugfix
diff --git a/CHANGES.md b/CHANGES.md
index 6dbee41e7c..bcf66142f9 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,42 @@
+# Synapse 1.151.0rc1 (2026-03-31)
+
+## Features
+
+- Add stable support for [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) Policy Servers. ([\#19503](https://github.com/element-hq/synapse/issues/19503))
+- Update and stabilize support for [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666): Get rooms in common with another user. Contributed by @tulir @ Beeper. ([\#19511](https://github.com/element-hq/synapse/issues/19511))
+- Updated experimental support for [MSC4388: Secure out-of-band channel for sign in with QR](https://github.com/matrix-org/matrix-spec-proposals/pull/4388). ([\#19573](https://github.com/element-hq/synapse/issues/19573))
+- Stabilize `room_version` and `encryption` fields in the space/room `/hierarchy` API (part of [MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266)). ([\#19576](https://github.com/element-hq/synapse/issues/19576))
+- Introduce a [configuration option](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#matrix_authentication_service) to allow using HTTP/2 over plaintext when Synapse connects to Matrix Authentication Service. ([\#19586](https://github.com/element-hq/synapse/issues/19586))
+
+## Bugfixes
+
+- Fix [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) Policy Servers implementation to skip signing `org.matrix.msc4284.policy` and `m.room.policy` state events. ([\#19503](https://github.com/element-hq/synapse/issues/19503))
+- Correctly apply [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) Policy Server signatures to events when the sender and policy server have the same server name. ([\#19503](https://github.com/element-hq/synapse/issues/19503))
+- Allow Synapse to start up even when discovery fails for an OpenID Connect provider. ([\#19509](https://github.com/element-hq/synapse/issues/19509))
+- Fix quarantine media admin APIs sometimes returning inaccurate counts for remote media. ([\#19559](https://github.com/element-hq/synapse/issues/19559))
+- Fix `Build and push complement image` CI job not having `poetry` available for the Complement runner script. ([\#19578](https://github.com/element-hq/synapse/issues/19578))
+- Increase timeout for policy server requests to avoid repeated requests for checking media. ([\#19629](https://github.com/element-hq/synapse/issues/19629))
+
+## Deprecations and Removals
+
+- Remove support for [MSC3852: Expose user agent information on Device](https://github.com/matrix-org/matrix-spec-proposals/pull/3852) as the MSC was closed. ([\#19430](https://github.com/element-hq/synapse/issues/19430))
+
+## Internal Changes
+
+- Fix small comment typo in config output from the `demo/start.sh` script. ([\#19538](https://github.com/element-hq/synapse/issues/19538))
+- Add MSC3820 comment context to `RoomVersion` attributes. ([\#19577](https://github.com/element-hq/synapse/issues/19577))
+- Remove `redacted_because` from internal unsigned. ([\#19581](https://github.com/element-hq/synapse/issues/19581))
+- Prevent sending registration emails if registration is disabled. ([\#19585](https://github.com/element-hq/synapse/issues/19585))
+- Port `RoomVersion` to Rust. ([\#19589](https://github.com/element-hq/synapse/issues/19589))
+- Only show failing Complement tests in the formatted output in CI. ([\#19590](https://github.com/element-hq/synapse/issues/19590))
+- Ensure old Complement test files are removed when downloading a Complement checkout via `./scripts-dev/complement.sh`. ([\#19592](https://github.com/element-hq/synapse/issues/19592))
+- Update `HomeserverTestCase.pump()` docstring to demystify behavior (Twisted reactor/clock). ([\#19602](https://github.com/element-hq/synapse/issues/19602))
+- Deprecate `HomeserverTestCase.pump()` in favor of more direct `HomeserverTestCase.reactor.advance(...)` usage. ([\#19602](https://github.com/element-hq/synapse/issues/19602))
+- Lower the Postgres database `statement_timeout` to 10m (previously 1h). ([\#19604](https://github.com/element-hq/synapse/issues/19604))
+
+
+
+
# Synapse 1.150.0 (2026-03-24)
No significant changes since 1.150.0rc1.
diff --git a/changelog.d/19430.removal b/changelog.d/19430.removal
deleted file mode 100644
index 8920bccc38..0000000000
--- a/changelog.d/19430.removal
+++ /dev/null
@@ -1 +0,0 @@
-Remove support for [MSC3852: Expose user agent information on Device](https://github.com/matrix-org/matrix-spec-proposals/pull/3852) as the MSC was closed.
\ No newline at end of file
diff --git a/changelog.d/19503.bugfix.1 b/changelog.d/19503.bugfix.1
deleted file mode 100644
index 45e3ad603b..0000000000
--- a/changelog.d/19503.bugfix.1
+++ /dev/null
@@ -1 +0,0 @@
-Fix [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) Policy Servers implementation to skip signing `org.matrix.msc4284.policy` and `m.room.policy` state events.
\ No newline at end of file
diff --git a/changelog.d/19503.bugfix.2 b/changelog.d/19503.bugfix.2
deleted file mode 100644
index 8a423ba785..0000000000
--- a/changelog.d/19503.bugfix.2
+++ /dev/null
@@ -1 +0,0 @@
-Correctly apply [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) Policy Server signatures to events when the sender and policy server have the same server name.
\ No newline at end of file
diff --git a/changelog.d/19503.feature b/changelog.d/19503.feature
deleted file mode 100644
index 20db8aeaae..0000000000
--- a/changelog.d/19503.feature
+++ /dev/null
@@ -1 +0,0 @@
-Add stable support for [MSC4284](https://github.com/matrix-org/matrix-spec-proposals/pull/4284) Policy Servers.
diff --git a/changelog.d/19509.bugfix b/changelog.d/19509.bugfix
deleted file mode 100644
index 4c98f1f4ee..0000000000
--- a/changelog.d/19509.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Allow Synapse to start up even when discovery fails for an OpenID Connect provider.
\ No newline at end of file
diff --git a/changelog.d/19511.feature b/changelog.d/19511.feature
deleted file mode 100644
index bb9a38b9c1..0000000000
--- a/changelog.d/19511.feature
+++ /dev/null
@@ -1 +0,0 @@
-Update and stabilize support for [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666): Get rooms in common with another user. Contributed by @tulir @ Beeper.
diff --git a/changelog.d/19538.misc b/changelog.d/19538.misc
deleted file mode 100644
index 56d3d2744d..0000000000
--- a/changelog.d/19538.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix small comment typo in config output from the `demo/start.sh` script.
diff --git a/changelog.d/19559.bugfix b/changelog.d/19559.bugfix
deleted file mode 100644
index f64a84e8e0..0000000000
--- a/changelog.d/19559.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix quarantine media admin APIs sometimes returning inaccurate counts for remote media.
\ No newline at end of file
diff --git a/changelog.d/19573.feature b/changelog.d/19573.feature
deleted file mode 100644
index 69eca83681..0000000000
--- a/changelog.d/19573.feature
+++ /dev/null
@@ -1 +0,0 @@
-Updated experimental support for [MSC4388: Secure out-of-band channel for sign in with QR](https://github.com/matrix-org/matrix-spec-proposals/pull/4388).
diff --git a/changelog.d/19576.feature b/changelog.d/19576.feature
deleted file mode 100644
index e346c71720..0000000000
--- a/changelog.d/19576.feature
+++ /dev/null
@@ -1 +0,0 @@
-Stabilize `room_version` and `encryption` fields in the space/room `/hierarchy` API (part of [MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266)).
\ No newline at end of file
diff --git a/changelog.d/19577.misc b/changelog.d/19577.misc
deleted file mode 100644
index d26790e490..0000000000
--- a/changelog.d/19577.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add MSC3820 comment context to `RoomVersion` attributes.
diff --git a/changelog.d/19578.bugfix b/changelog.d/19578.bugfix
deleted file mode 100644
index dbaf4be7e8..0000000000
--- a/changelog.d/19578.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix `Build and push complement image` CI job not having `poetry` available for the Complement runner script.
diff --git a/changelog.d/19581.misc b/changelog.d/19581.misc
deleted file mode 100644
index 02856f3497..0000000000
--- a/changelog.d/19581.misc
+++ /dev/null
@@ -1 +0,0 @@
-Remove `redacted_because` from internal unsigned.
diff --git a/changelog.d/19585.misc b/changelog.d/19585.misc
deleted file mode 100644
index 621cf782f1..0000000000
--- a/changelog.d/19585.misc
+++ /dev/null
@@ -1 +0,0 @@
-Prevent sending registration emails if registration is disabled.
\ No newline at end of file
diff --git a/changelog.d/19586.feature b/changelog.d/19586.feature
deleted file mode 100644
index a10bd2d2ef..0000000000
--- a/changelog.d/19586.feature
+++ /dev/null
@@ -1 +0,0 @@
-Introduce a [configuration option](https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html#matrix_authentication_service) to allow using HTTP/2 over plaintext when Synapse connects to Matrix Authentication Service.
diff --git a/changelog.d/19589.misc b/changelog.d/19589.misc
deleted file mode 100644
index f3c15326c6..0000000000
--- a/changelog.d/19589.misc
+++ /dev/null
@@ -1 +0,0 @@
-Port `RoomVersion` to Rust.
diff --git a/changelog.d/19590.misc b/changelog.d/19590.misc
deleted file mode 100644
index b5357334ce..0000000000
--- a/changelog.d/19590.misc
+++ /dev/null
@@ -1 +0,0 @@
-Only show failing Complement tests in the formatted output in CI.
\ No newline at end of file
diff --git a/changelog.d/19592.misc b/changelog.d/19592.misc
deleted file mode 100644
index e3fa3a5416..0000000000
--- a/changelog.d/19592.misc
+++ /dev/null
@@ -1 +0,0 @@
-Ensure old Complement test files are removed when downloading a Complement checkout via `./scripts-dev/complement.sh`.
\ No newline at end of file
diff --git a/changelog.d/19602.misc.1 b/changelog.d/19602.misc.1
deleted file mode 100644
index 222f26980d..0000000000
--- a/changelog.d/19602.misc.1
+++ /dev/null
@@ -1 +0,0 @@
-Update `HomeserverTestCase.pump()` docstring to demystify behavior (Twisted reactor/clock).
diff --git a/changelog.d/19602.misc.2 b/changelog.d/19602.misc.2
deleted file mode 100644
index 4cadad653c..0000000000
--- a/changelog.d/19602.misc.2
+++ /dev/null
@@ -1 +0,0 @@
-Deprecate `HomeserverTestCase.pump()` in favor of more direct `HomeserverTestCase.reactor.advance(...)` usage.
diff --git a/changelog.d/19604.misc b/changelog.d/19604.misc
deleted file mode 100644
index 65081117d6..0000000000
--- a/changelog.d/19604.misc
+++ /dev/null
@@ -1 +0,0 @@
-Lower the Postgres database `statement_timeout` to 10m (previously 1h).
diff --git a/changelog.d/19629.bugfix b/changelog.d/19629.bugfix
deleted file mode 100644
index 06a03d7819..0000000000
--- a/changelog.d/19629.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Increase timeout for policy server requests to avoid repeated requests for checking media.
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index c8146764de..36fa0e5140 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+matrix-synapse-py3 (1.151.0~rc1) stable; urgency=medium
+
+ * New synapse release 1.151.0rc1.
+
+ -- Synapse Packaging team Tue, 31 Mar 2026 12:23:34 +0000
+
matrix-synapse-py3 (1.150.0) stable; urgency=medium
* New synapse release 1.150.0.
diff --git a/pyproject.toml b/pyproject.toml
index c2f0182687..27cdbcb671 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "matrix-synapse"
-version = "1.150.0"
+version = "1.151.0rc1"
description = "Homeserver for the Matrix decentralised comms protocol"
readme = "README.rst"
authors = [
diff --git a/schema/synapse-config.schema.yaml b/schema/synapse-config.schema.yaml
index aaa306cee0..6acc5c3762 100644
--- a/schema/synapse-config.schema.yaml
+++ b/schema/synapse-config.schema.yaml
@@ -1,5 +1,5 @@
$schema: https://element-hq.github.io/synapse/latest/schema/v1/meta.schema.json
-$id: https://element-hq.github.io/synapse/schema/synapse/v1.150/synapse-config.schema.json
+$id: https://element-hq.github.io/synapse/schema/synapse/v1.151/synapse-config.schema.json
type: object
properties:
modules:
From e1a429ae2ec72a3cdb074eec8988813937026e3d Mon Sep 17 00:00:00 2001
From: Eric Eastwood
Date: Tue, 31 Mar 2026 11:01:12 -0500
Subject: [PATCH 12/16] Run lint script to format Complement tests introduced
in #19509 (#19636)
Run `poetry run ./scripts-dev/lint.sh` which exposed some formatted
Complement tests that were introduced in
https://github.com/element-hq/synapse/pull/19509
There is no CI for this so it's easy to miss.
---
changelog.d/19636.misc | 1 +
complement/tests/internal/dockerutil/files.go | 20 ++++++++++++++++---
complement/tests/oidc_test.go | 5 ++++-
3 files changed, 22 insertions(+), 4 deletions(-)
create mode 100644 changelog.d/19636.misc
diff --git a/changelog.d/19636.misc b/changelog.d/19636.misc
new file mode 100644
index 0000000000..9ea0f04603
--- /dev/null
+++ b/changelog.d/19636.misc
@@ -0,0 +1 @@
+Run lint script to format Complement tests introduced in [#19509](https://github.com/element-hq/synapse/pull/19509).
diff --git a/complement/tests/internal/dockerutil/files.go b/complement/tests/internal/dockerutil/files.go
index 62d2c557af..e19f684368 100644
--- a/complement/tests/internal/dockerutil/files.go
+++ b/complement/tests/internal/dockerutil/files.go
@@ -14,7 +14,13 @@ import (
//
// Internally, produces an uncompressed single-file tape archive (tar) that is sent to the docker
// daemon to be unpacked into the container filesystem.
-func WriteFileIntoContainer(t *testing.T, docker *client.Client, containerID string, path string, data []byte) error {
+func WriteFileIntoContainer(
+ t *testing.T,
+ docker *client.Client,
+ containerID string,
+ path string,
+ data []byte,
+) error {
// Create a fake/virtual tar file in memory that we can copy to the container
// via https://stackoverflow.com/a/52131297/796832
var buf bytes.Buffer
@@ -25,7 +31,11 @@ func WriteFileIntoContainer(t *testing.T, docker *client.Client, containerID str
Size: int64(len(data)),
})
if err != nil {
- return fmt.Errorf("WriteIntoContainer: failed to write tarball header for %s: %v", path, err)
+ return fmt.Errorf(
+ "WriteIntoContainer: failed to write tarball header for %s: %v",
+ path,
+ err,
+ )
}
_, err = tw.Write([]byte(data))
if err != nil {
@@ -34,7 +44,11 @@ func WriteFileIntoContainer(t *testing.T, docker *client.Client, containerID str
err = tw.Close()
if err != nil {
- return fmt.Errorf("WriteIntoContainer: failed to close tarball writer for %s: %w", path, err)
+ return fmt.Errorf(
+ "WriteIntoContainer: failed to close tarball writer for %s: %w",
+ path,
+ err,
+ )
}
// Put our new fake file in the container volume
diff --git a/complement/tests/oidc_test.go b/complement/tests/oidc_test.go
index bddb382058..deabf49950 100644
--- a/complement/tests/oidc_test.go
+++ b/complement/tests/oidc_test.go
@@ -93,7 +93,10 @@ func TestOIDCProviderUnavailable(t *testing.T) {
// by the user's browser in order to start the login flow.
queryParams := url.Values{}
queryParams.Add("redirectUrl", "http://redirect.invalid/redirect")
- res := unauthedClient.Do(t, "GET", []string{"_matrix", "client", "v3", "login", "sso", "redirect", "oidc-test_provider"},
+ res := unauthedClient.Do(
+ t,
+ "GET",
+ []string{"_matrix", "client", "v3", "login", "sso", "redirect", "oidc-test_provider"},
client.WithQueries(queryParams),
)
From 2e9b8202f0a1a8ceba9f02bb5ec227498d51dcbd Mon Sep 17 00:00:00 2001
From: Eric Eastwood
Date: Tue, 31 Mar 2026 14:10:36 -0500
Subject: [PATCH 13/16] Document context for why increase timeout for policy
server requests (#19633)
See https://github.com/element-hq/synapse/pull/19629#discussion_r3011377886
---
changelog.d/19633.misc | 1 +
synapse/handlers/room_policy.py | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletion(-)
create mode 100644 changelog.d/19633.misc
diff --git a/changelog.d/19633.misc b/changelog.d/19633.misc
new file mode 100644
index 0000000000..37efd5309f
--- /dev/null
+++ b/changelog.d/19633.misc
@@ -0,0 +1 @@
+Document context for why increase timeout for policy server requests.
diff --git a/synapse/handlers/room_policy.py b/synapse/handlers/room_policy.py
index fee3c6cfaf..01943e1991 100644
--- a/synapse/handlers/room_policy.py
+++ b/synapse/handlers/room_policy.py
@@ -223,11 +223,16 @@ class RoomPolicyHandler:
return
# Ask the policy server to sign this event.
- # We set a smallish timeout here as we don't want to block event sending too long.
try:
signature = await self._federation_client.ask_policy_server_to_sign_event(
policy_server.server_name,
event,
+ # We set a smallish timeout here as we don't want to block event sending
+ # too long.
+ #
+ # We were previously seeing regular timeouts with media
+ # scanning/checking when the timeout was set to 3s. 30s was chosen based
+ # on vibes and light real world testing.
timeout=30000,
)
# TODO: We can *probably* remove this when we remove unstable MSC4284 support.
From cb6989514eccef02facce7568a8ae2c016c34fd5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 2 Apr 2026 11:47:54 +0000
Subject: [PATCH 14/16] Bump pygments from 2.19.2 to 2.20.0 (#19632)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
poetry.lock | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 06746a8a6f..d9a223dab2 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -2291,14 +2291,14 @@ urllib3 = ">=1.26.0"
[[package]]
name = "pygments"
-version = "2.19.2"
+version = "2.20.0"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
-python-versions = ">=3.8"
+python-versions = ">=3.9"
groups = ["dev"]
files = [
- {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"},
- {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"},
+ {file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"},
+ {file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"},
]
[package.extras]
From 62f23fed27808d11fdd3e3089838bec7f188d787 Mon Sep 17 00:00:00 2001
From: Neil Johnson
Date: Thu, 2 Apr 2026 14:29:18 +0100
Subject: [PATCH 15/16] include workaround for macos (#19615)
Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
---
changelog.d/19615.doc | 1 +
docs/development/contributing_guide.md | 15 +++++++++++++++
2 files changed, 16 insertions(+)
create mode 100644 changelog.d/19615.doc
diff --git a/changelog.d/19615.doc b/changelog.d/19615.doc
new file mode 100644
index 0000000000..9e28ac8312
--- /dev/null
+++ b/changelog.d/19615.doc
@@ -0,0 +1 @@
+Include a workaround for running the unit tests with SQLite under recent versions of MacOS.
diff --git a/docs/development/contributing_guide.md b/docs/development/contributing_guide.md
index ab506b5f05..7e0dd4059d 100644
--- a/docs/development/contributing_guide.md
+++ b/docs/development/contributing_guide.md
@@ -309,6 +309,21 @@ works without further arguments).
Your Postgres account needs to be able to create databases; see the postgres
docs for [`ALTER ROLE`](https://www.postgresql.org/docs/current/sql-alterrole.html).
+### Running the tests on MacOS
+
+To run the unit tests with SQLite on MacOS you will need to swap out the default MacOS
+python interpreter with the homebrew version. This is due to the default using a
+locked down version of Python and sqlite3. After installing python from homebrew:
+
+```
+ poetry env remove --all
+ poetry env use /opt/homebrew/bin/python3.13
+ poetry install
+ poetry run trial tests
+```
+
+This example uses python 3.13, but choose whichever version you want.
+
## Run the integration tests ([Sytest](https://github.com/matrix-org/sytest)).
The integration tests are a more comprehensive suite of tests. They
From 8291a493c735d56f2f81d69c544fffea0bb8088f Mon Sep 17 00:00:00 2001
From: Noah Markert
Date: Fri, 3 Apr 2026 11:21:23 +0200
Subject: [PATCH 16/16] resolves #19403 Report the rust compiler version used
in the prometheus metrics (#19643)
# What is done?
- resolves #19403
- Adds build-time Rust compiler detection and captures the rustc
--version value during the build.
- Exposes the captured compiler version from the Rust extension via a
new Python-callable function.
- Exports a new Prometheus metric for rustc version.
# How to test?
- compile `poetry install`
- add `enable_metrics: true` and
```yaml
resources:
- compress: false
names:
- client
- federation
- metrics
```
to homeserver.yaml
- start synapse
- find the rustc version at `http://localhost:8008/_synapse/metrics`
### Pull Request Checklist
* [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: Quentin Gliech
---
Cargo.lock | 16 ++++++++++++++++
changelog.d/19643.feature | 1 +
rust/Cargo.toml | 1 +
rust/build.rs | 6 ++++++
rust/src/lib.rs | 9 +++++++++
synapse/metrics/__init__.py | 10 ++++++++--
synapse/synapse_rust/__init__.pyi | 1 +
7 files changed, 42 insertions(+), 2 deletions(-)
create mode 100644 changelog.d/19643.feature
diff --git a/Cargo.lock b/Cargo.lock
index 5cb2ab58af..e1747182e3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1078,6 +1078,15 @@ version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
[[package]]
name = "rustls"
version = "0.23.31"
@@ -1169,6 +1178,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "semver"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
+
[[package]]
name = "serde"
version = "1.0.228"
@@ -1330,6 +1345,7 @@ dependencies = [
"pythonize",
"regex",
"reqwest",
+ "rustc_version",
"serde",
"serde_json",
"sha2",
diff --git a/changelog.d/19643.feature b/changelog.d/19643.feature
new file mode 100644
index 0000000000..0851623fbf
--- /dev/null
+++ b/changelog.d/19643.feature
@@ -0,0 +1 @@
+Report the Rust compiler version used in the Prometheus metrics. Contributed by Noah Markert.
\ No newline at end of file
diff --git a/rust/Cargo.toml b/rust/Cargo.toml
index 8199a4e02b..bca2f6ed70 100644
--- a/rust/Cargo.toml
+++ b/rust/Cargo.toml
@@ -64,3 +64,4 @@ default = ["extension-module"]
[build-dependencies]
blake2 = "0.10.4"
hex = "0.4.3"
+rustc_version = "0.4.1"
diff --git a/rust/build.rs b/rust/build.rs
index 8755f3bfa3..2a99a9b95d 100644
--- a/rust/build.rs
+++ b/rust/build.rs
@@ -8,6 +8,7 @@
use std::path::PathBuf;
use blake2::{Blake2b512, Digest};
+use rustc_version::version_meta;
fn main() -> Result<(), std::io::Error> {
let mut dirs = vec![PathBuf::from("src")];
@@ -48,6 +49,11 @@ fn main() -> Result<(), std::io::Error> {
let hex_digest = hex::encode(hasher.finalize());
println!("cargo:rustc-env=SYNAPSE_RUST_DIGEST={hex_digest}");
+ let rustc_version = version_meta()
+ .map(|v| v.short_version_string)
+ .unwrap_or_else(|_| "unknown".to_string());
+ println!("cargo:rustc-env=SYNAPSE_RUSTC_VERSION={}", rustc_version,);
+
// The default rules don't pick up trivial changes to the workspace config
// files, but we need to rebuild if those change to pick up the changed
// hashes.
diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index a6e01fce64..3b049a51b7 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -30,6 +30,14 @@ fn get_rust_file_digest() -> &'static str {
env!("SYNAPSE_RUST_DIGEST")
}
+/// Returns the `rustc` version used when this native module was built.
+///
+/// This value is embedded at build time, so it can be exported as a prometheus metrics.
+#[pyfunction]
+pub fn get_rustc_version() -> &'static str {
+ env!("SYNAPSE_RUSTC_VERSION")
+}
+
/// Formats the sum of two numbers as string.
#[pyfunction]
#[pyo3(text_signature = "(a, b, /)")]
@@ -50,6 +58,7 @@ fn reset_logging_config() {
fn synapse_rust(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_function(wrap_pyfunction!(sum_as_string, m)?)?;
m.add_function(wrap_pyfunction!(get_rust_file_digest, m)?)?;
+ m.add_function(wrap_pyfunction!(get_rustc_version, m)?)?;
m.add_function(wrap_pyfunction!(reset_logging_config, m)?)?;
acl::register_module(py, m)?;
diff --git a/synapse/metrics/__init__.py b/synapse/metrics/__init__.py
index ba4334e372..cf9aaa7f2d 100644
--- a/synapse/metrics/__init__.py
+++ b/synapse/metrics/__init__.py
@@ -62,6 +62,7 @@ from twisted.web.server import Request
import synapse.metrics._reactor_metrics # noqa: F401
from synapse.metrics._gc import MIN_TIME_BETWEEN_GCS, install_gc_manager
from synapse.metrics._types import Collector
+from synapse.synapse_rust import get_rustc_version
from synapse.types import StrSequence
from synapse.util import SYNAPSE_VERSION
@@ -69,6 +70,9 @@ logger = logging.getLogger(__name__)
METRICS_PREFIX = "/_synapse/metrics"
+# Rust version used for compilation
+RUSTC_VERSION = get_rustc_version()
+
HAVE_PROC_SELF_STAT = os.path.exists("/proc/self/stat")
SERVER_NAME_LABEL = "server_name"
@@ -672,15 +676,17 @@ event_processing_lag_by_event = Histogram(
# consider this process-level because all Synapse homeservers running in the process
# will use the same Synapse version.
build_info = Gauge( # type: ignore[missing-server-name-label]
- "synapse_build_info", "Build information", ["pythonversion", "version", "osversion"]
+ "synapse_build_info",
+ "Build information",
+ ["pythonversion", "version", "osversion", "rustcversion"],
)
build_info.labels(
" ".join([platform.python_implementation(), platform.python_version()]),
SYNAPSE_VERSION,
" ".join([platform.system(), platform.release()]),
+ RUSTC_VERSION,
).set(1)
-
synapse_server_name_info = Gauge(
"synapse_server_name_info",
"Maps Synapse `server_name`s to the `instance`s they're hosted on",
diff --git a/synapse/synapse_rust/__init__.pyi b/synapse/synapse_rust/__init__.pyi
index d25c609106..cb3eb7df07 100644
--- a/synapse/synapse_rust/__init__.pyi
+++ b/synapse/synapse_rust/__init__.pyi
@@ -1,3 +1,4 @@
def sum_as_string(a: int, b: int) -> str: ...
def get_rust_file_digest() -> str: ...
def reset_logging_config() -> None: ...
+def get_rustc_version() -> str: ...