mirror of
https://github.com/element-hq/synapse
synced 2024-09-17 20:05:10 +00:00
Merge branch 'develop' into madlittlemods/11850-migrate-to-opentelemetry
Conflicts: poetry.lock synapse/api/auth.py synapse/federation/federation_client.py synapse/logging/opentracing.py synapse/rest/client/keys.py synapse/rest/client/sendtodevice.py synapse/storage/schema/__init__.py
This commit is contained in:
commit
50f0342594
347 changed files with 5471 additions and 2937 deletions
|
@ -27,10 +27,10 @@ which is under the Unlicense licence.
|
||||||
{{- . -}}{{- "\n" -}}
|
{{- . -}}{{- "\n" -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- with .TestCases -}}
|
{{- with .TestCases -}}
|
||||||
{{- /* Failing tests are first */ -}}
|
{{- /* Passing tests are first */ -}}
|
||||||
{{- range . -}}
|
{{- range . -}}
|
||||||
{{- if and (ne .Result "PASS") (ne .Result "SKIP") -}}
|
{{- if eq .Result "PASS" -}}
|
||||||
::group::{{ "\033" }}[0;31m❌{{ " " }}{{- .Name -}}
|
::group::{{ "\033" }}[0;32m✅{{ " " }}{{- .Name -}}
|
||||||
{{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}}
|
{{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}}
|
||||||
{{- with .Coverage -}}
|
{{- with .Coverage -}}
|
||||||
, coverage: {{ . }}%
|
, coverage: {{ . }}%
|
||||||
|
@ -47,7 +47,6 @@ which is under the Unlicense licence.
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
{{- /* Then skipped tests are second */ -}}
|
{{- /* Then skipped tests are second */ -}}
|
||||||
{{- range . -}}
|
{{- range . -}}
|
||||||
{{- if eq .Result "SKIP" -}}
|
{{- if eq .Result "SKIP" -}}
|
||||||
|
@ -68,11 +67,10 @@ which is under the Unlicense licence.
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- /* and failing tests are last */ -}}
|
||||||
{{- /* Then passing tests are last */ -}}
|
|
||||||
{{- range . -}}
|
{{- range . -}}
|
||||||
{{- if eq .Result "PASS" -}}
|
{{- if and (ne .Result "PASS") (ne .Result "SKIP") -}}
|
||||||
::group::{{ "\033" }}[0;32m✅{{ " " }}{{- .Name -}}
|
::group::{{ "\033" }}[0;31m❌{{ " " }}{{- .Name -}}
|
||||||
{{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}}
|
{{- "\033" -}}[0;37m ({{if $settings.ShowTestStatus}}{{.Result}}; {{end}}{{ .Duration -}}
|
||||||
{{- with .Coverage -}}
|
{{- with .Coverage -}}
|
||||||
, coverage: {{ . }}%
|
, coverage: {{ . }}%
|
||||||
|
|
128
.ci/scripts/calculate_jobs.py
Executable file
128
.ci/scripts/calculate_jobs.py
Executable file
|
@ -0,0 +1,128 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# Copyright 2022 The Matrix.org Foundation C.I.C.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# Calculate the trial jobs to run based on if we're in a PR or not.
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
IS_PR = os.environ["GITHUB_REF"].startswith("refs/pull/")
|
||||||
|
|
||||||
|
# First calculate the various trial jobs.
|
||||||
|
#
|
||||||
|
# For each type of test we only run on Py3.7 on PRs
|
||||||
|
|
||||||
|
trial_sqlite_tests = [
|
||||||
|
{
|
||||||
|
"python-version": "3.7",
|
||||||
|
"database": "sqlite",
|
||||||
|
"extras": "all",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if not IS_PR:
|
||||||
|
trial_sqlite_tests.extend(
|
||||||
|
{
|
||||||
|
"python-version": version,
|
||||||
|
"database": "sqlite",
|
||||||
|
"extras": "all",
|
||||||
|
}
|
||||||
|
for version in ("3.8", "3.9", "3.10")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
trial_postgres_tests = [
|
||||||
|
{
|
||||||
|
"python-version": "3.7",
|
||||||
|
"database": "postgres",
|
||||||
|
"postgres-version": "10",
|
||||||
|
"extras": "all",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if not IS_PR:
|
||||||
|
trial_postgres_tests.append(
|
||||||
|
{
|
||||||
|
"python-version": "3.10",
|
||||||
|
"database": "postgres",
|
||||||
|
"postgres-version": "14",
|
||||||
|
"extras": "all",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
trial_no_extra_tests = [
|
||||||
|
{
|
||||||
|
"python-version": "3.7",
|
||||||
|
"database": "sqlite",
|
||||||
|
"extras": "",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
print("::group::Calculated trial jobs")
|
||||||
|
print(
|
||||||
|
json.dumps(
|
||||||
|
trial_sqlite_tests + trial_postgres_tests + trial_no_extra_tests, indent=4
|
||||||
|
)
|
||||||
|
)
|
||||||
|
print("::endgroup::")
|
||||||
|
|
||||||
|
test_matrix = json.dumps(
|
||||||
|
trial_sqlite_tests + trial_postgres_tests + trial_no_extra_tests
|
||||||
|
)
|
||||||
|
print(f"::set-output name=trial_test_matrix::{test_matrix}")
|
||||||
|
|
||||||
|
|
||||||
|
# First calculate the various sytest jobs.
|
||||||
|
#
|
||||||
|
# For each type of test we only run on focal on PRs
|
||||||
|
|
||||||
|
|
||||||
|
sytest_tests = [
|
||||||
|
{
|
||||||
|
"sytest-tag": "focal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sytest-tag": "focal",
|
||||||
|
"postgres": "postgres",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sytest-tag": "focal",
|
||||||
|
"postgres": "multi-postgres",
|
||||||
|
"workers": "workers",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
if not IS_PR:
|
||||||
|
sytest_tests.extend(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"sytest-tag": "testing",
|
||||||
|
"postgres": "postgres",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sytest-tag": "buster",
|
||||||
|
"postgres": "multi-postgres",
|
||||||
|
"workers": "workers",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
print("::group::Calculated sytest jobs")
|
||||||
|
print(json.dumps(sytest_tests, indent=4))
|
||||||
|
print("::endgroup::")
|
||||||
|
|
||||||
|
test_matrix = json.dumps(sytest_tests)
|
||||||
|
print(f"::set-output name=sytest_test_matrix::{test_matrix}")
|
21
.ci/scripts/gotestfmt
Executable file
21
.ci/scripts/gotestfmt
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# wraps `gotestfmt`, hiding output from successful packages unless
|
||||||
|
# all tests passed.
|
||||||
|
|
||||||
|
set -o pipefail
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# tee the test results to a log, whilst also piping them into gotestfmt,
|
||||||
|
# telling it to hide successful results, so that we can clearly see
|
||||||
|
# unsuccessful results.
|
||||||
|
tee complement.log | gotestfmt -hide successful-packages
|
||||||
|
|
||||||
|
# gotestfmt will exit non-zero if there were any failures, so if we got to this
|
||||||
|
# point, we must have had a successful result.
|
||||||
|
echo "All tests successful; showing all test results"
|
||||||
|
|
||||||
|
# Pipe the test results back through gotestfmt, showing all results.
|
||||||
|
# The log file consists of JSON lines giving the test results, interspersed
|
||||||
|
# with regular stdout lines (including reports of downloaded packages).
|
||||||
|
grep '^{"Time":' complement.log | gotestfmt
|
|
@ -5,18 +5,8 @@
|
||||||
# - creates a venv with these old versions using poetry; and finally
|
# - creates a venv with these old versions using poetry; and finally
|
||||||
# - invokes `trial` to run the tests with old deps.
|
# - invokes `trial` to run the tests with old deps.
|
||||||
|
|
||||||
# Prevent tzdata from asking for user input
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
apt-get update
|
|
||||||
apt-get install -y \
|
|
||||||
python3 python3-dev python3-pip python3-venv pipx \
|
|
||||||
libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev
|
|
||||||
|
|
||||||
export LANG="C.UTF-8"
|
|
||||||
|
|
||||||
# Prevent virtualenv from auto-updating pip to an incompatible version
|
# Prevent virtualenv from auto-updating pip to an incompatible version
|
||||||
export VIRTUALENV_NO_DOWNLOAD=1
|
export VIRTUALENV_NO_DOWNLOAD=1
|
||||||
|
|
||||||
|
@ -33,12 +23,6 @@ export VIRTUALENV_NO_DOWNLOAD=1
|
||||||
# a `cryptography` compiled against OpenSSL 1.1.
|
# a `cryptography` compiled against OpenSSL 1.1.
|
||||||
# - Omit systemd: we're not logging to journal here.
|
# - Omit systemd: we're not logging to journal here.
|
||||||
|
|
||||||
# TODO: also replace caret bounds, see https://python-poetry.org/docs/dependency-specification/#version-constraints
|
|
||||||
# We don't use these yet, but IIRC they are the default bound used when you `poetry add`.
|
|
||||||
# The sed expression 's/\^/==/g' ought to do the trick. But it would also change
|
|
||||||
# `python = "^3.7"` to `python = "==3.7", which would mean we fail because olddeps
|
|
||||||
# runs on 3.8 (#12343).
|
|
||||||
|
|
||||||
sed -i \
|
sed -i \
|
||||||
-e "s/[~>]=/==/g" \
|
-e "s/[~>]=/==/g" \
|
||||||
-e '/^python = "^/!s/\^/==/g' \
|
-e '/^python = "^/!s/\^/==/g' \
|
||||||
|
@ -55,7 +39,7 @@ sed -i \
|
||||||
# toml file. This means we don't have to ensure compatibility between old deps and
|
# toml file. This means we don't have to ensure compatibility between old deps and
|
||||||
# dev tools.
|
# dev tools.
|
||||||
|
|
||||||
pip install --user toml
|
pip install toml wheel
|
||||||
|
|
||||||
REMOVE_DEV_DEPENDENCIES="
|
REMOVE_DEV_DEPENDENCIES="
|
||||||
import toml
|
import toml
|
||||||
|
@ -69,8 +53,8 @@ with open('pyproject.toml', 'w') as f:
|
||||||
"
|
"
|
||||||
python3 -c "$REMOVE_DEV_DEPENDENCIES"
|
python3 -c "$REMOVE_DEV_DEPENDENCIES"
|
||||||
|
|
||||||
pipx install poetry==1.1.14
|
pip install poetry==1.2.0
|
||||||
~/.local/bin/poetry lock
|
poetry lock
|
||||||
|
|
||||||
echo "::group::Patched pyproject.toml"
|
echo "::group::Patched pyproject.toml"
|
||||||
cat pyproject.toml
|
cat pyproject.toml
|
||||||
|
@ -78,6 +62,3 @@ echo "::endgroup::"
|
||||||
echo "::group::Lockfile after patch"
|
echo "::group::Lockfile after patch"
|
||||||
cat poetry.lock
|
cat poetry.lock
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
~/.local/bin/poetry install -E "all test"
|
|
||||||
~/.local/bin/poetry run trial --jobs=2 tests
|
|
|
@ -4,8 +4,12 @@
|
||||||
# things to include
|
# things to include
|
||||||
!docker
|
!docker
|
||||||
!synapse
|
!synapse
|
||||||
|
!rust
|
||||||
!README.rst
|
!README.rst
|
||||||
!pyproject.toml
|
!pyproject.toml
|
||||||
!poetry.lock
|
!poetry.lock
|
||||||
|
!build_rust.py
|
||||||
|
|
||||||
|
rust/target
|
||||||
|
|
||||||
**/__pycache__
|
**/__pycache__
|
||||||
|
|
34
.github/workflows/latest_deps.yml
vendored
34
.github/workflows/latest_deps.yml
vendored
|
@ -26,12 +26,19 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
# The dev dependencies aren't exposed in the wheel metadata (at least with current
|
# The dev dependencies aren't exposed in the wheel metadata (at least with current
|
||||||
# poetry-core versions), so we install with poetry.
|
# poetry-core versions), so we install with poetry.
|
||||||
- uses: matrix-org/setup-python-poetry@v1
|
- uses: matrix-org/setup-python-poetry@v1
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
poetry-version: "1.2.0b1"
|
poetry-version: "1.2.0"
|
||||||
extras: "all"
|
extras: "all"
|
||||||
# Dump installed versions for debugging.
|
# Dump installed versions for debugging.
|
||||||
- run: poetry run pip list > before.txt
|
- run: poetry run pip list > before.txt
|
||||||
|
@ -53,6 +60,14 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- run: sudo apt-get -qq install xmlsec1
|
- run: sudo apt-get -qq install xmlsec1
|
||||||
- name: Set up PostgreSQL ${{ matrix.postgres-version }}
|
- name: Set up PostgreSQL ${{ matrix.postgres-version }}
|
||||||
if: ${{ matrix.postgres-version }}
|
if: ${{ matrix.postgres-version }}
|
||||||
|
@ -69,6 +84,12 @@ jobs:
|
||||||
if: ${{ matrix.postgres-version }}
|
if: ${{ matrix.postgres-version }}
|
||||||
timeout-minutes: 2
|
timeout-minutes: 2
|
||||||
run: until pg_isready -h localhost; do sleep 1; done
|
run: until pg_isready -h localhost; do sleep 1; done
|
||||||
|
|
||||||
|
# We nuke the local copy, as we've installed synapse into the virtualenv
|
||||||
|
# (rather than use an editable install, which we no longer support). If we
|
||||||
|
# don't do this then python can't find the native lib.
|
||||||
|
- run: rm -rf synapse/
|
||||||
|
|
||||||
- run: python -m twisted.trial --jobs=2 tests
|
- run: python -m twisted.trial --jobs=2 tests
|
||||||
env:
|
env:
|
||||||
SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }}
|
SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }}
|
||||||
|
@ -113,6 +134,14 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- name: Ensure sytest runs `pip install`
|
- name: Ensure sytest runs `pip install`
|
||||||
# Delete the lockfile so sytest will `pip install` rather than `poetry install`
|
# Delete the lockfile so sytest will `pip install` rather than `poetry install`
|
||||||
run: rm /src/poetry.lock
|
run: rm /src/poetry.lock
|
||||||
|
@ -163,7 +192,7 @@ jobs:
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
TEST_ONLY_IGNORE_POETRY_LOCKFILE=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | gotestfmt
|
TEST_ONLY_IGNORE_POETRY_LOCKFILE=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt
|
||||||
shell: bash
|
shell: bash
|
||||||
name: Run Complement Tests
|
name: Run Complement Tests
|
||||||
|
|
||||||
|
@ -187,4 +216,3 @@ jobs:
|
||||||
with:
|
with:
|
||||||
update_existing: true
|
update_existing: true
|
||||||
filename: .ci/latest_deps_build_failed_issue_template.md
|
filename: .ci/latest_deps_build_failed_issue_template.md
|
||||||
|
|
||||||
|
|
63
.github/workflows/release-artifacts.yml
vendored
63
.github/workflows/release-artifacts.yml
vendored
|
@ -89,9 +89,67 @@ jobs:
|
||||||
name: debs
|
name: debs
|
||||||
path: debs/*
|
path: debs/*
|
||||||
|
|
||||||
|
build-wheels:
|
||||||
|
name: Build wheels on ${{ matrix.os }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-20.04, macos-10.15]
|
||||||
|
is_pr:
|
||||||
|
- ${{ startsWith(github.ref, 'refs/pull/') }}
|
||||||
|
|
||||||
|
exclude:
|
||||||
|
# Don't build macos wheels on PR CI.
|
||||||
|
- is_pr: true
|
||||||
|
os: "macos-10.15"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v3
|
||||||
|
|
||||||
|
- name: Install cibuildwheel
|
||||||
|
run: python -m pip install cibuildwheel==2.9.0 poetry==1.2.0
|
||||||
|
|
||||||
|
# Only build a single wheel in CI.
|
||||||
|
- name: Set env vars.
|
||||||
|
run: |
|
||||||
|
echo "CIBW_BUILD="cp37-manylinux_x86_64"" >> $GITHUB_ENV
|
||||||
|
if: startsWith(github.ref, 'refs/pull/')
|
||||||
|
|
||||||
|
- name: Build wheels
|
||||||
|
run: python -m cibuildwheel --output-dir wheelhouse
|
||||||
|
env:
|
||||||
|
# Skip testing for platforms which various libraries don't have wheels
|
||||||
|
# for, and so need extra build deps.
|
||||||
|
CIBW_TEST_SKIP: pp39-* *i686* *musl* pp37-macosx*
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: Wheel
|
||||||
|
path: ./wheelhouse/*.whl
|
||||||
|
|
||||||
build-sdist:
|
build-sdist:
|
||||||
name: "Build pypi distribution files"
|
name: Build sdist
|
||||||
uses: "matrix-org/backend-meta/.github/workflows/packaging.yml@v1"
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ !startsWith(github.ref, 'refs/pull/') }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
|
||||||
|
- run: pip install build
|
||||||
|
|
||||||
|
- name: Build sdist
|
||||||
|
run: python -m build --sdist
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Sdist
|
||||||
|
path: dist/*.tar.gz
|
||||||
|
|
||||||
|
|
||||||
# if it's a tag, create a release and attach the artifacts to it
|
# if it's a tag, create a release and attach the artifacts to it
|
||||||
attach-assets:
|
attach-assets:
|
||||||
|
@ -99,6 +157,7 @@ jobs:
|
||||||
if: ${{ !failure() && !cancelled() && startsWith(github.ref, 'refs/tags/') }}
|
if: ${{ !failure() && !cancelled() && startsWith(github.ref, 'refs/tags/') }}
|
||||||
needs:
|
needs:
|
||||||
- build-debs
|
- build-debs
|
||||||
|
- build-wheels
|
||||||
- build-sdist
|
- build-sdist
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|
239
.github/workflows/tests.yml
vendored
239
.github/workflows/tests.yml
vendored
|
@ -10,6 +10,23 @@ concurrency:
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
# Job to detect what has changed so we don't run e.g. Rust checks on PRs that
|
||||||
|
# don't modify Rust code.
|
||||||
|
changes:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
rust: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.rust }}
|
||||||
|
steps:
|
||||||
|
- uses: dorny/paths-filter@v2
|
||||||
|
id: filter
|
||||||
|
# We only check on PRs
|
||||||
|
if: startsWith(github.ref, 'refs/pull/')
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
rust:
|
||||||
|
- 'rust/**'
|
||||||
|
- 'Cargo.toml'
|
||||||
|
|
||||||
check-sampleconfig:
|
check-sampleconfig:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -65,61 +82,100 @@ jobs:
|
||||||
extras: "all"
|
extras: "all"
|
||||||
- run: poetry run scripts-dev/check_pydantic_models.py
|
- run: poetry run scripts-dev/check_pydantic_models.py
|
||||||
|
|
||||||
|
lint-clippy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: changes
|
||||||
|
if: ${{ needs.changes.outputs.rust == 'true' }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.61.0
|
||||||
|
override: true
|
||||||
|
components: clippy
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
|
- run: cargo clippy
|
||||||
|
|
||||||
|
lint-rustfmt:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: changes
|
||||||
|
if: ${{ needs.changes.outputs.rust == 'true' }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.61.0
|
||||||
|
override: true
|
||||||
|
components: rustfmt
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
|
- run: cargo fmt --check
|
||||||
|
|
||||||
# Dummy step to gate other tests on without repeating the whole list
|
# Dummy step to gate other tests on without repeating the whole list
|
||||||
linting-done:
|
linting-done:
|
||||||
if: ${{ !cancelled() }} # Run this even if prior jobs were skipped
|
if: ${{ !cancelled() }} # Run this even if prior jobs were skipped
|
||||||
needs: [lint, lint-crlf, lint-newsfile, lint-pydantic, check-sampleconfig, check-schema-delta]
|
needs:
|
||||||
|
- lint
|
||||||
|
- lint-crlf
|
||||||
|
- lint-newsfile
|
||||||
|
- lint-pydantic
|
||||||
|
- check-sampleconfig
|
||||||
|
- check-schema-delta
|
||||||
|
- lint-clippy
|
||||||
|
- lint-rustfmt
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- run: "true"
|
- run: "true"
|
||||||
|
|
||||||
trial:
|
calculate-test-jobs:
|
||||||
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
|
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
|
||||||
needs: linting-done
|
needs: linting-done
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
- id: get-matrix
|
||||||
|
run: .ci/scripts/calculate_jobs.py
|
||||||
|
outputs:
|
||||||
|
trial_test_matrix: ${{ steps.get-matrix.outputs.trial_test_matrix }}
|
||||||
|
sytest_test_matrix: ${{ steps.get-matrix.outputs.sytest_test_matrix }}
|
||||||
|
|
||||||
|
trial:
|
||||||
|
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
|
||||||
|
needs: calculate-test-jobs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ["3.7", "3.8", "3.9", "3.10"]
|
job: ${{ fromJson(needs.calculate-test-jobs.outputs.trial_test_matrix) }}
|
||||||
database: ["sqlite"]
|
|
||||||
extras: ["all"]
|
|
||||||
include:
|
|
||||||
# Newest Python without optional deps
|
|
||||||
- python-version: "3.10"
|
|
||||||
extras: ""
|
|
||||||
|
|
||||||
# Oldest Python with PostgreSQL
|
|
||||||
- python-version: "3.7"
|
|
||||||
database: "postgres"
|
|
||||||
postgres-version: "10"
|
|
||||||
extras: "all"
|
|
||||||
|
|
||||||
# Newest Python with newest PostgreSQL
|
|
||||||
- python-version: "3.10"
|
|
||||||
database: "postgres"
|
|
||||||
postgres-version: "14"
|
|
||||||
extras: "all"
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: sudo apt-get -qq install xmlsec1
|
- run: sudo apt-get -qq install xmlsec1
|
||||||
- name: Set up PostgreSQL ${{ matrix.postgres-version }}
|
- name: Set up PostgreSQL ${{ matrix.job.postgres-version }}
|
||||||
if: ${{ matrix.postgres-version }}
|
if: ${{ matrix.job.postgres-version }}
|
||||||
run: |
|
run: |
|
||||||
docker run -d -p 5432:5432 \
|
docker run -d -p 5432:5432 \
|
||||||
-e POSTGRES_PASSWORD=postgres \
|
-e POSTGRES_PASSWORD=postgres \
|
||||||
-e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
|
-e POSTGRES_INITDB_ARGS="--lc-collate C --lc-ctype C --encoding UTF8" \
|
||||||
postgres:${{ matrix.postgres-version }}
|
postgres:${{ matrix.job.postgres-version }}
|
||||||
- uses: matrix-org/setup-python-poetry@v1
|
- uses: matrix-org/setup-python-poetry@v1
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.job.python-version }}
|
||||||
extras: ${{ matrix.extras }}
|
extras: ${{ matrix.job.extras }}
|
||||||
- name: Await PostgreSQL
|
- name: Await PostgreSQL
|
||||||
if: ${{ matrix.postgres-version }}
|
if: ${{ matrix.job.postgres-version }}
|
||||||
timeout-minutes: 2
|
timeout-minutes: 2
|
||||||
run: until pg_isready -h localhost; do sleep 1; done
|
run: until pg_isready -h localhost; do sleep 1; done
|
||||||
- run: poetry run trial --jobs=2 tests
|
- run: poetry run trial --jobs=2 tests
|
||||||
env:
|
env:
|
||||||
SYNAPSE_POSTGRES: ${{ matrix.database == 'postgres' || '' }}
|
SYNAPSE_POSTGRES: ${{ matrix.job.database == 'postgres' || '' }}
|
||||||
SYNAPSE_POSTGRES_HOST: localhost
|
SYNAPSE_POSTGRES_HOST: localhost
|
||||||
SYNAPSE_POSTGRES_USER: postgres
|
SYNAPSE_POSTGRES_USER: postgres
|
||||||
SYNAPSE_POSTGRES_PASSWORD: postgres
|
SYNAPSE_POSTGRES_PASSWORD: postgres
|
||||||
|
@ -140,16 +196,54 @@ jobs:
|
||||||
# Note: sqlite only; no postgres
|
# Note: sqlite only; no postgres
|
||||||
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
|
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
|
||||||
needs: linting-done
|
needs: linting-done
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Test with old deps
|
|
||||||
uses: docker://ubuntu:focal # For old python and sqlite
|
- name: Install Rust
|
||||||
# Note: focal seems to be using 3.8, but the oldest is 3.7?
|
uses: actions-rs/toolchain@v1
|
||||||
# See https://github.com/matrix-org/synapse/issues/12343
|
|
||||||
with:
|
with:
|
||||||
workdir: /github/workspace
|
toolchain: 1.61.0
|
||||||
entrypoint: .ci/scripts/test_old_deps.sh
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
|
# There aren't wheels for some of the older deps, so we need to install
|
||||||
|
# their build dependencies
|
||||||
|
- run: |
|
||||||
|
sudo apt-get -qq install build-essential libffi-dev python-dev \
|
||||||
|
libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev
|
||||||
|
|
||||||
|
- uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.7'
|
||||||
|
|
||||||
|
# Calculating the old-deps actually takes a bunch of time, so we cache the
|
||||||
|
# pyproject.toml / poetry.lock. We need to cache pyproject.toml as
|
||||||
|
# otherwise the `poetry install` step will error due to the poetry.lock
|
||||||
|
# file being outdated.
|
||||||
|
#
|
||||||
|
# This caches the output of `Prepare old deps`, which should generate the
|
||||||
|
# same `pyproject.toml` and `poetry.lock` for a given `pyproject.toml` input.
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
id: cache-poetry-old-deps
|
||||||
|
name: Cache poetry.lock
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
poetry.lock
|
||||||
|
pyproject.toml
|
||||||
|
key: poetry-old-deps2-${{ hashFiles('pyproject.toml') }}
|
||||||
|
- name: Prepare old deps
|
||||||
|
if: steps.cache-poetry-old-deps.outputs.cache-hit != 'true'
|
||||||
|
run: .ci/scripts/prepare_old_deps.sh
|
||||||
|
|
||||||
|
# We only now install poetry so that `setup-python-poetry` caches the
|
||||||
|
# right poetry.lock's dependencies.
|
||||||
|
- uses: matrix-org/setup-python-poetry@v1
|
||||||
|
with:
|
||||||
|
python-version: '3.7'
|
||||||
|
extras: "all test"
|
||||||
|
|
||||||
|
- run: poetry run trial -j2 tests
|
||||||
- name: Dump logs
|
- name: Dump logs
|
||||||
# Logs are most useful when the command fails, always include them.
|
# Logs are most useful when the command fails, always include them.
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
|
@ -198,50 +292,37 @@ jobs:
|
||||||
|
|
||||||
sytest:
|
sytest:
|
||||||
if: ${{ !failure() && !cancelled() }}
|
if: ${{ !failure() && !cancelled() }}
|
||||||
needs: linting-done
|
needs: calculate-test-jobs
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: matrixdotorg/sytest-synapse:${{ matrix.sytest-tag }}
|
image: matrixdotorg/sytest-synapse:${{ matrix.job.sytest-tag }}
|
||||||
volumes:
|
volumes:
|
||||||
- ${{ github.workspace }}:/src
|
- ${{ github.workspace }}:/src
|
||||||
env:
|
env:
|
||||||
SYTEST_BRANCH: ${{ github.head_ref }}
|
SYTEST_BRANCH: ${{ github.head_ref }}
|
||||||
POSTGRES: ${{ matrix.postgres && 1}}
|
POSTGRES: ${{ matrix.job.postgres && 1}}
|
||||||
MULTI_POSTGRES: ${{ (matrix.postgres == 'multi-postgres') && 1}}
|
MULTI_POSTGRES: ${{ (matrix.job.postgres == 'multi-postgres') && 1}}
|
||||||
WORKERS: ${{ matrix.workers && 1 }}
|
WORKERS: ${{ matrix.job.workers && 1 }}
|
||||||
REDIS: ${{ matrix.redis && 1 }}
|
BLACKLIST: ${{ matrix.job.workers && 'synapse-blacklist-with-workers' }}
|
||||||
BLACKLIST: ${{ matrix.workers && 'synapse-blacklist-with-workers' }}
|
|
||||||
TOP: ${{ github.workspace }}
|
TOP: ${{ github.workspace }}
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
job: ${{ fromJson(needs.calculate-test-jobs.outputs.sytest_test_matrix) }}
|
||||||
- sytest-tag: focal
|
|
||||||
|
|
||||||
- sytest-tag: focal
|
|
||||||
postgres: postgres
|
|
||||||
|
|
||||||
- sytest-tag: testing
|
|
||||||
postgres: postgres
|
|
||||||
|
|
||||||
- sytest-tag: focal
|
|
||||||
postgres: multi-postgres
|
|
||||||
workers: workers
|
|
||||||
|
|
||||||
- sytest-tag: buster
|
|
||||||
postgres: multi-postgres
|
|
||||||
workers: workers
|
|
||||||
|
|
||||||
- sytest-tag: buster
|
|
||||||
postgres: postgres
|
|
||||||
workers: workers
|
|
||||||
redis: redis
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Prepare test blacklist
|
- name: Prepare test blacklist
|
||||||
run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers
|
run: cat sytest-blacklist .ci/worker-blacklist > synapse-blacklist-with-workers
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.61.0
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- name: Run SyTest
|
- name: Run SyTest
|
||||||
run: /bootstrap.sh synapse
|
run: /bootstrap.sh synapse
|
||||||
working-directory: /src
|
working-directory: /src
|
||||||
|
@ -252,7 +333,7 @@ jobs:
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
with:
|
with:
|
||||||
name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.*, ', ') }})
|
name: Sytest Logs - ${{ job.status }} - (${{ join(matrix.job.*, ', ') }})
|
||||||
path: |
|
path: |
|
||||||
/logs/results.tap
|
/logs/results.tap
|
||||||
/logs/**/*.log*
|
/logs/**/*.log*
|
||||||
|
@ -283,7 +364,6 @@ jobs:
|
||||||
- run: sudo apt-get -qq install xmlsec1
|
- run: sudo apt-get -qq install xmlsec1
|
||||||
- uses: matrix-org/setup-python-poetry@v1
|
- uses: matrix-org/setup-python-poetry@v1
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
|
||||||
extras: "postgres"
|
extras: "postgres"
|
||||||
- run: .ci/scripts/test_export_data_command.sh
|
- run: .ci/scripts/test_export_data_command.sh
|
||||||
|
|
||||||
|
@ -349,15 +429,41 @@ jobs:
|
||||||
with:
|
with:
|
||||||
path: synapse
|
path: synapse
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.61.0
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- name: Prepare Complement's Prerequisites
|
- name: Prepare Complement's Prerequisites
|
||||||
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
run: synapse/.ci/scripts/setup_complement_prerequisites.sh
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | gotestfmt
|
POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt
|
||||||
shell: bash
|
shell: bash
|
||||||
name: Run Complement Tests
|
name: Run Complement Tests
|
||||||
|
|
||||||
|
cargo-test:
|
||||||
|
if: ${{ needs.changes.outputs.rust == 'true' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- linting-done
|
||||||
|
- changes
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: 1.61.0
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
|
- run: cargo test
|
||||||
|
|
||||||
# a job which marks all the other jobs as complete, thus allowing PRs to be merged.
|
# a job which marks all the other jobs as complete, thus allowing PRs to be merged.
|
||||||
tests-done:
|
tests-done:
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
|
@ -372,6 +478,7 @@ jobs:
|
||||||
- export-data
|
- export-data
|
||||||
- portdb
|
- portdb
|
||||||
- complement
|
- complement
|
||||||
|
- cargo-test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: matrix-org/done-action@v2
|
- uses: matrix-org/done-action@v2
|
||||||
|
|
28
.github/workflows/triage-incoming.yml
vendored
Normal file
28
.github/workflows/triage-incoming.yml
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
name: Move new issues into the issue triage board
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [ opened ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
add_new_issues:
|
||||||
|
name: Add new issues to the triage board
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: octokit/graphql-action@v2.x
|
||||||
|
id: add_to_project
|
||||||
|
with:
|
||||||
|
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||||
|
query: |
|
||||||
|
mutation add_to_project($projectid:ID!,$contentid:ID!) {
|
||||||
|
addProjectV2ItemById(input: {projectId: $projectid contentId: $contentid}) {
|
||||||
|
item {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
projectid: ${{ env.PROJECT_ID }}
|
||||||
|
contentid: ${{ github.event.issue.node_id }}
|
||||||
|
env:
|
||||||
|
PROJECT_ID: "PVT_kwDOAIB0Bs4AFDdZ"
|
||||||
|
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
44
.github/workflows/triage_labelled.yml
vendored
Normal file
44
.github/workflows/triage_labelled.yml
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
name: Move labelled issues to correct projects
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [ labeled ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
move_needs_info:
|
||||||
|
name: Move X-Needs-Info on the triage board
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: >
|
||||||
|
contains(github.event.issue.labels.*.name, 'X-Needs-Info')
|
||||||
|
steps:
|
||||||
|
- uses: octokit/graphql-action@v2.x
|
||||||
|
id: add_to_project
|
||||||
|
with:
|
||||||
|
headers: '{"GraphQL-Features": "projects_next_graphql"}'
|
||||||
|
query: |
|
||||||
|
mutation {
|
||||||
|
updateProjectV2ItemFieldValue(
|
||||||
|
input: {
|
||||||
|
projectId: $projectid
|
||||||
|
itemId: $contentid
|
||||||
|
fieldId: $fieldid
|
||||||
|
value: {
|
||||||
|
singleSelectOptionId: "Todo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
projectV2Item {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
projectid: ${{ env.PROJECT_ID }}
|
||||||
|
contentid: ${{ github.event.issue.node_id }}
|
||||||
|
fieldid: ${{ env.FIELD_ID }}
|
||||||
|
optionid: ${{ env.OPTION_ID }}
|
||||||
|
env:
|
||||||
|
PROJECT_ID: "PVT_kwDOAIB0Bs4AFDdZ"
|
||||||
|
GITHUB_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||||
|
FIELD_ID: "PVTSSF_lADOAIB0Bs4AFDdZzgC6ZA4"
|
||||||
|
OPTION_ID: "ba22e43c"
|
26
.github/workflows/twisted_trunk.yml
vendored
26
.github/workflows/twisted_trunk.yml
vendored
|
@ -16,6 +16,14 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- uses: matrix-org/setup-python-poetry@v1
|
- uses: matrix-org/setup-python-poetry@v1
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
|
@ -34,6 +42,14 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: sudo apt-get -qq install xmlsec1
|
- run: sudo apt-get -qq install xmlsec1
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- uses: matrix-org/setup-python-poetry@v1
|
- uses: matrix-org/setup-python-poetry@v1
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
|
@ -66,6 +82,14 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
override: true
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
|
||||||
- name: Patch dependencies
|
- name: Patch dependencies
|
||||||
# Note: The poetry commands want to create a virtualenv in /src/.venv/,
|
# Note: The poetry commands want to create a virtualenv in /src/.venv/,
|
||||||
# but the sytest-synapse container expects it to be in /venv/.
|
# but the sytest-synapse container expects it to be in /venv/.
|
||||||
|
@ -137,7 +161,7 @@ jobs:
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
TEST_ONLY_SKIP_DEP_HASH_VERIFICATION=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | gotestfmt
|
TEST_ONLY_SKIP_DEP_HASH_VERIFICATION=1 POSTGRES=${{ (matrix.database == 'Postgres') && 1 || '' }} WORKERS=${{ (matrix.arrangement == 'workers') && 1 || '' }} COMPLEMENT_DIR=`pwd`/complement synapse/scripts-dev/complement.sh -json 2>&1 | synapse/.ci/scripts/gotestfmt
|
||||||
shell: bash
|
shell: bash
|
||||||
name: Run Complement Tests
|
name: Run Complement Tests
|
||||||
|
|
||||||
|
|
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -60,3 +60,10 @@ book/
|
||||||
# complement
|
# complement
|
||||||
/complement-*
|
/complement-*
|
||||||
/master.tar.gz
|
/master.tar.gz
|
||||||
|
|
||||||
|
# rust
|
||||||
|
/target/
|
||||||
|
/synapse/*.so
|
||||||
|
|
||||||
|
# Poetry will create a setup.py, which we don't want to include.
|
||||||
|
/setup.py
|
||||||
|
|
122
CHANGES.md
122
CHANGES.md
|
@ -1,3 +1,111 @@
|
||||||
|
Synapse 1.66.0 (2022-08-31)
|
||||||
|
===========================
|
||||||
|
|
||||||
|
No significant changes since 1.66.0rc2.
|
||||||
|
|
||||||
|
This release removes the ability for homeservers to delegate email ownership
|
||||||
|
verification and password reset confirmation to identity servers. This removal
|
||||||
|
was originally planned for Synapse 1.64, but was later deferred until now. See
|
||||||
|
the [upgrade notes](https://matrix-org.github.io/synapse/v1.66/upgrade.html#upgrading-to-v1660) for more details.
|
||||||
|
|
||||||
|
Deployments with multiple workers should note that the direct TCP replication
|
||||||
|
configuration was deprecated in Synapse v1.18.0 and will be removed in Synapse
|
||||||
|
v1.67.0. In particular, the TCP `replication` [listener](https://matrix-org.github.io/synapse/v1.66/usage/configuration/config_documentation.html#listeners)
|
||||||
|
type (not to be confused with the `replication` resource on the `http` listener
|
||||||
|
type) and the `worker_replication_port` config option will be removed .
|
||||||
|
|
||||||
|
To migrate to Redis, add the [`redis` config](https://matrix-org.github.io/synapse/v1.66/workers.html#shared-configuration),
|
||||||
|
then remove the TCP `replication` listener from config of the master and
|
||||||
|
`worker_replication_port` from worker config. Note that a HTTP listener with a
|
||||||
|
`replication` resource is still required. See the
|
||||||
|
[worker documentation](https://matrix-org.github.io/synapse/v1.66/workers.html)
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
|
||||||
|
Synapse 1.66.0rc2 (2022-08-30)
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Fix a bug introduced in Synapse 1.66.0rc1 where the new rate limit metrics were misreported (`synapse_rate_limit_sleep_affected_hosts`, `synapse_rate_limit_reject_affected_hosts`). ([\#13649](https://github.com/matrix-org/synapse/issues/13649))
|
||||||
|
|
||||||
|
|
||||||
|
Synapse 1.66.0rc1 (2022-08-23)
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Features
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Improve validation of request bodies for the following client-server API endpoints: [`/account/password`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountpassword), [`/account/password/email/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountpasswordemailrequesttoken), [`/account/deactivate`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountdeactivate) and [`/account/3pid/email/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidemailrequesttoken). ([\#13188](https://github.com/matrix-org/synapse/issues/13188), [\#13563](https://github.com/matrix-org/synapse/issues/13563))
|
||||||
|
- Add forgotten status to [Room Details Admin API](https://matrix-org.github.io/synapse/latest/admin_api/rooms.html#room-details-api). ([\#13503](https://github.com/matrix-org/synapse/issues/13503))
|
||||||
|
- Add an experimental implementation for [MSC3852 (Expose user agents on `Device`)](https://github.com/matrix-org/matrix-spec-proposals/pull/3852). ([\#13549](https://github.com/matrix-org/synapse/issues/13549))
|
||||||
|
- Add `org.matrix.msc2716v4` experimental room version with updated content fields. Part of [MSC2716 (Importing history)](https://github.com/matrix-org/matrix-spec-proposals/pull/2716). ([\#13551](https://github.com/matrix-org/synapse/issues/13551))
|
||||||
|
- Add support for compression to federation responses. ([\#13537](https://github.com/matrix-org/synapse/issues/13537))
|
||||||
|
- Improve performance of sending messages in rooms with thousands of local users. ([\#13522](https://github.com/matrix-org/synapse/issues/13522), [\#13547](https://github.com/matrix-org/synapse/issues/13547))
|
||||||
|
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Faster room joins: make `/joined_members` block whilst the room is partial stated. ([\#13514](https://github.com/matrix-org/synapse/issues/13514))
|
||||||
|
- Fix a bug introduced in Synapse 1.21.0 where the [`/event_reports` Admin API](https://matrix-org.github.io/synapse/develop/admin_api/event_reports.html) could return a total count which was larger than the number of results you can actually query for. ([\#13525](https://github.com/matrix-org/synapse/issues/13525))
|
||||||
|
- Fix a bug introduced in Synapse 1.52.0 where sending server notices fails if `max_avatar_size` or `allowed_avatar_mimetypes` is set and not `system_mxid_avatar_url`. ([\#13566](https://github.com/matrix-org/synapse/issues/13566))
|
||||||
|
- Fix a bug where the `opentracing.force_tracing_for_users` config option would not apply to [`/sendToDevice`](https://spec.matrix.org/v1.3/client-server-api/#put_matrixclientv3sendtodeviceeventtypetxnid) and [`/keys/upload`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3keysupload) requests. ([\#13574](https://github.com/matrix-org/synapse/issues/13574))
|
||||||
|
|
||||||
|
|
||||||
|
Improved Documentation
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
- Add `openssl` example for generating registration HMAC digest. ([\#13472](https://github.com/matrix-org/synapse/issues/13472))
|
||||||
|
- Tidy up Synapse's README. ([\#13491](https://github.com/matrix-org/synapse/issues/13491))
|
||||||
|
- Document that event purging related to the `redaction_retention_period` config option is executed only every 5 minutes. ([\#13492](https://github.com/matrix-org/synapse/issues/13492))
|
||||||
|
- Add a warning to retention documentation regarding the possibility of database corruption. ([\#13497](https://github.com/matrix-org/synapse/issues/13497))
|
||||||
|
- Document that the `DOCKER_BUILDKIT=1` flag is needed to build the docker image. ([\#13515](https://github.com/matrix-org/synapse/issues/13515))
|
||||||
|
- Add missing links in `user_consent` section of configuration manual. ([\#13536](https://github.com/matrix-org/synapse/issues/13536))
|
||||||
|
- Fix the doc and some warnings that were referring to the nonexistent `custom_templates_directory` setting (instead of `custom_template_directory`). ([\#13538](https://github.com/matrix-org/synapse/issues/13538))
|
||||||
|
|
||||||
|
|
||||||
|
Deprecations and Removals
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
- Remove the ability for homeservers to delegate email ownership verification
|
||||||
|
and password reset confirmation to identity servers. See [upgrade notes](https://matrix-org.github.io/synapse/v1.66/upgrade.html#upgrading-to-v1660) for more details.
|
||||||
|
|
||||||
|
Internal Changes
|
||||||
|
----------------
|
||||||
|
|
||||||
|
### Faster room joins
|
||||||
|
|
||||||
|
- Update the rejected state of events during de-partial-stating. ([\#13459](https://github.com/matrix-org/synapse/issues/13459))
|
||||||
|
- Avoid blocking lazy-loading `/sync`s during partial joins due to remote memberships. Pull remote memberships from auth events instead of the room state. ([\#13477](https://github.com/matrix-org/synapse/issues/13477))
|
||||||
|
- Refuse to start when faster joins is enabled on a deployment with workers, since worker configurations are not currently supported. ([\#13531](https://github.com/matrix-org/synapse/issues/13531))
|
||||||
|
|
||||||
|
### Metrics and tracing
|
||||||
|
|
||||||
|
- Allow use of both `@trace` and `@tag_args` stacked on the same function. ([\#13453](https://github.com/matrix-org/synapse/issues/13453))
|
||||||
|
- Instrument the federation/backfill part of `/messages` for understandable traces in Jaeger. ([\#13489](https://github.com/matrix-org/synapse/issues/13489))
|
||||||
|
- Instrument `FederationStateIdsServlet` (`/state_ids`) for understandable traces in Jaeger. ([\#13499](https://github.com/matrix-org/synapse/issues/13499), [\#13554](https://github.com/matrix-org/synapse/issues/13554))
|
||||||
|
- Track HTTP response times over 10 seconds from `/messages` (`synapse_room_message_list_rest_servlet_response_time_seconds`). ([\#13533](https://github.com/matrix-org/synapse/issues/13533))
|
||||||
|
- Add metrics to track how the rate limiter is affecting requests (sleep/reject). ([\#13534](https://github.com/matrix-org/synapse/issues/13534), [\#13541](https://github.com/matrix-org/synapse/issues/13541))
|
||||||
|
- Add metrics to time how long it takes us to do backfill processing (`synapse_federation_backfill_processing_before_time_seconds`, `synapse_federation_backfill_processing_after_time_seconds`). ([\#13535](https://github.com/matrix-org/synapse/issues/13535), [\#13584](https://github.com/matrix-org/synapse/issues/13584))
|
||||||
|
- Add metrics to track rate limiter queue timing (`synapse_rate_limit_queue_wait_time_seconds`). ([\#13544](https://github.com/matrix-org/synapse/issues/13544))
|
||||||
|
- Update metrics to track `/messages` response time by room size. ([\#13545](https://github.com/matrix-org/synapse/issues/13545))
|
||||||
|
|
||||||
|
### Everything else
|
||||||
|
|
||||||
|
- Refactor methods in `synapse.api.auth.Auth` to use `Requester` objects everywhere instead of user IDs. ([\#13024](https://github.com/matrix-org/synapse/issues/13024))
|
||||||
|
- Clean-up tests for notifications. ([\#13471](https://github.com/matrix-org/synapse/issues/13471))
|
||||||
|
- Add some miscellaneous comments to document sync, especially around `compute_state_delta`. ([\#13474](https://github.com/matrix-org/synapse/issues/13474))
|
||||||
|
- Use literals in place of `HTTPStatus` constants in tests. ([\#13479](https://github.com/matrix-org/synapse/issues/13479), [\#13488](https://github.com/matrix-org/synapse/issues/13488))
|
||||||
|
- Add comments about how event push actions are rotated. ([\#13485](https://github.com/matrix-org/synapse/issues/13485))
|
||||||
|
- Modify HTML template content to better support mobile devices' screen sizes. ([\#13493](https://github.com/matrix-org/synapse/issues/13493))
|
||||||
|
- Add a linter script which will reject non-strict types in Pydantic models. ([\#13502](https://github.com/matrix-org/synapse/issues/13502))
|
||||||
|
- Reduce the number of tests using legacy TCP replication. ([\#13543](https://github.com/matrix-org/synapse/issues/13543))
|
||||||
|
- Allow specifying additional request fields when using the `HomeServerTestCase.login` helper method. ([\#13549](https://github.com/matrix-org/synapse/issues/13549))
|
||||||
|
- Make `HomeServerTestCase` load any configured homeserver modules automatically. ([\#13558](https://github.com/matrix-org/synapse/issues/13558))
|
||||||
|
|
||||||
|
|
||||||
Synapse 1.65.0 (2022-08-16)
|
Synapse 1.65.0 (2022-08-16)
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
@ -300,6 +408,20 @@ No significant changes since 1.62.0rc3.
|
||||||
|
|
||||||
Authors of spam-checker plugins should consult the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.62/docs/upgrade.md#upgrading-to-v1620) to learn about the enriched signatures for spam checker callbacks, which are supported with this release of Synapse.
|
Authors of spam-checker plugins should consult the [upgrade notes](https://github.com/matrix-org/synapse/blob/release-v1.62/docs/upgrade.md#upgrading-to-v1620) to learn about the enriched signatures for spam checker callbacks, which are supported with this release of Synapse.
|
||||||
|
|
||||||
|
## Security advisory
|
||||||
|
|
||||||
|
The following issue is fixed in 1.62.0.
|
||||||
|
|
||||||
|
* [GHSA-jhjh-776m-4765](https://github.com/matrix-org/synapse/security/advisories/GHSA-jhjh-776m-4765) / [CVE-2022-31152](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-31152)
|
||||||
|
|
||||||
|
Synapse instances prior to 1.62.0 did not implement the Matrix [event authorization rules](https://spec.matrix.org/v1.3/rooms/v10/#authorization-rules) correctly. An attacker could craft events which would be accepted by Synapse but not a spec-conformant server, potentially causing divergence in the room state between servers.
|
||||||
|
|
||||||
|
Homeservers with federation disabled via the [`federation_domain_whitelist`](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#federation_domain_whitelist) config option are unaffected.
|
||||||
|
|
||||||
|
Administrators of homeservers with federation enabled are advised to upgrade to v1.62.0 or higher.
|
||||||
|
|
||||||
|
Fixed by [#13087](https://github.com/matrix-org/synapse/pull/13087) and [#13088](https://github.com/matrix-org/synapse/pull/13088).
|
||||||
|
|
||||||
Synapse 1.62.0rc3 (2022-07-04)
|
Synapse 1.62.0rc3 (2022-07-04)
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
|
|
5
Cargo.toml
Normal file
5
Cargo.toml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# We make the whole Synapse folder a workspace so that we can run `cargo`
|
||||||
|
# commands from the root (rather than having to cd into rust/).
|
||||||
|
|
||||||
|
[workspace]
|
||||||
|
members = ["rust"]
|
|
@ -3,7 +3,7 @@ Synapse |support| |development| |documentation| |license| |pypi| |python|
|
||||||
=========================================================================
|
=========================================================================
|
||||||
|
|
||||||
Synapse is an open-source `Matrix <https://matrix.org/>`_ homeserver written and
|
Synapse is an open-source `Matrix <https://matrix.org/>`_ homeserver written and
|
||||||
maintained by the Matrix.org Foundation. We began rapid development began in 2014,
|
maintained by the Matrix.org Foundation. We began rapid development in 2014,
|
||||||
reaching v1.0.0 in 2019. Development on Synapse and the Matrix protocol itself continues
|
reaching v1.0.0 in 2019. Development on Synapse and the Matrix protocol itself continues
|
||||||
in earnest today.
|
in earnest today.
|
||||||
|
|
||||||
|
|
20
build_rust.py
Normal file
20
build_rust.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# A build script for poetry that adds the rust extension.
|
||||||
|
|
||||||
|
import os
|
||||||
|
from typing import Any, Dict
|
||||||
|
|
||||||
|
from setuptools_rust import Binding, RustExtension
|
||||||
|
|
||||||
|
|
||||||
|
def build(setup_kwargs: Dict[str, Any]) -> None:
|
||||||
|
original_project_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
cargo_toml_path = os.path.join(original_project_dir, "rust", "Cargo.toml")
|
||||||
|
|
||||||
|
extension = RustExtension(
|
||||||
|
target="synapse.synapse_rust",
|
||||||
|
path=cargo_toml_path,
|
||||||
|
binding=Binding.PyO3,
|
||||||
|
py_limited_api=True,
|
||||||
|
)
|
||||||
|
setup_kwargs.setdefault("rust_extensions", []).append(extension)
|
||||||
|
setup_kwargs["zip_safe"] = False
|
1
changelog.d/12595.misc
Normal file
1
changelog.d/12595.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add a stub Rust crate.
|
|
@ -1 +0,0 @@
|
||||||
Improve validation of request bodies for the following client-server API endpoints: [`/account/password`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountpassword), [`/account/password/email/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountpasswordemailrequesttoken), [`/account/deactivate`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3accountdeactivate) and [`/account/3pid/email/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidemailrequesttoken).
|
|
1
changelog.d/13241.removal
Normal file
1
changelog.d/13241.removal
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Drop support for calling `/_matrix/client/v3/rooms/{roomId}/invite` without an `id_access_token`, which was not permitted by the spec. Contributed by @Vetchu.
|
|
@ -1 +0,0 @@
|
||||||
Allow use of both `@trace` and `@tag_args` stacked on the same function (tracing).
|
|
|
@ -1 +0,0 @@
|
||||||
Faster joins: update the rejected state of events during de-partial-stating.
|
|
|
@ -1 +0,0 @@
|
||||||
Clean-up tests for notifications.
|
|
|
@ -1 +0,0 @@
|
||||||
Add `openssl` example for generating registration HMAC digest.
|
|
|
@ -1 +0,0 @@
|
||||||
Add some miscellaneous comments to document sync, especially around `compute_state_delta`.
|
|
|
@ -1 +0,0 @@
|
||||||
Faster room joins: Avoid blocking lazy-loading `/sync`s during partial joins due to remote memberships. Pull remote memberships from auth events instead of the room state.
|
|
|
@ -1 +0,0 @@
|
||||||
Use literals in place of `HTTPStatus` constants in tests.
|
|
1
changelog.d/13483.misc
Normal file
1
changelog.d/13483.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Extend the release script to wait for GitHub Actions to finish and to be usable as a guide for the whole process.
|
|
@ -1 +0,0 @@
|
||||||
Add comments about how event push actions are rotated.
|
|
|
@ -1 +0,0 @@
|
||||||
Use literals in place of `HTTPStatus` constants in tests.
|
|
|
@ -1 +0,0 @@
|
||||||
Instrument the federation/backfill part of `/messages` for understandable traces in Jaeger.
|
|
|
@ -1 +0,0 @@
|
||||||
Tidy up Synapse's README.
|
|
|
@ -1 +0,0 @@
|
||||||
Document that event purging related to the `redaction_retention_period` config option is executed only every 5 minutes.
|
|
|
@ -1 +0,0 @@
|
||||||
Modify HTML template content to better support mobile devices' screen sizes.
|
|
|
@ -1,2 +0,0 @@
|
||||||
Add a warning to retention documentation regarding the possibility of database corruption.
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Instrument `FederationStateIdsServlet` (`/state_ids`) for understandable traces in Jaeger.
|
|
|
@ -1 +0,0 @@
|
||||||
Add a linter script which will reject non-strict types in Pydantic models.
|
|
|
@ -1 +0,0 @@
|
||||||
Add forgotten status to Room Details API.
|
|
1
changelog.d/13506.bugfix
Normal file
1
changelog.d/13506.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a bug introduced in Synapse v1.41.0 where the `/hierarchy` API returned non-standard information (a `room_id` field under each entry in `children_state`).
|
1
changelog.d/13509.bugfix
Normal file
1
changelog.d/13509.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a bug introduced in Synapse 1.13 where the [List Rooms admin API](https://matrix-org.github.io/synapse/develop/admin_api/rooms.html#list-room-api) would return integers instead of booleans for the `federatable` and `public` fields when using a Sqlite database.
|
|
@ -1 +0,0 @@
|
||||||
Faster room joins: make `/joined_members` block whilst the room is partial stated.
|
|
|
@ -1 +0,0 @@
|
||||||
Document that the `DOCKER_BUILDKIT=1` flag is needed to build the docker image.
|
|
|
@ -1 +0,0 @@
|
||||||
Fix a bug in the `/event_reports` Admin API which meant that the total count could be larger than the number of results you can actually query for.
|
|
|
@ -1 +0,0 @@
|
||||||
Faster room joins: Refuse to start when faster joins is enabled on a deployment with workers, since worker configurations are not currently supported.
|
|
|
@ -1 +0,0 @@
|
||||||
Track HTTP response times over 10 seconds from `/messages` (`synapse_room_message_list_rest_servlet_response_time_seconds`).
|
|
|
@ -1 +0,0 @@
|
||||||
Add metrics to track how the rate limiter is affecting requests (sleep/reject).
|
|
|
@ -1 +0,0 @@
|
||||||
Add metrics to time how long it takes us to do backfill processing (`synapse_federation_backfill_processing_before_time_seconds`, `synapse_federation_backfill_processing_after_time_seconds`).
|
|
|
@ -1 +0,0 @@
|
||||||
Add missing links in `user_consent` section of configuration manual.
|
|
|
@ -1 +0,0 @@
|
||||||
Add support for compression to federation responses.
|
|
|
@ -1 +0,0 @@
|
||||||
Fix the doc and some warnings that were referring to the nonexistent `custom_templates_directory` setting (instead of `custom_template_directory`).
|
|
1
changelog.d/13540.misc
Normal file
1
changelog.d/13540.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add experimental configuration option to allow disabling legacy Prometheus metric names.
|
|
@ -1 +0,0 @@
|
||||||
Add metrics to track how the rate limiter is affecting requests (sleep/reject).
|
|
|
@ -1 +0,0 @@
|
||||||
Add metrics to track rate limiter queue timing (`synapse_rate_limit_queue_wait_time_seconds`).
|
|
|
@ -1 +0,0 @@
|
||||||
Update metrics to track `/messages` response time by room size.
|
|
1
changelog.d/13546.bugfix
Normal file
1
changelog.d/13546.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix bug that user cannot `/forget` rooms after the last member has left the room.
|
|
@ -1 +0,0 @@
|
||||||
Improve performance of sending messages in rooms with thousands of local users.
|
|
|
@ -1 +0,0 @@
|
||||||
Instrument `FederationStateIdsServlet` (`/state_ids`) for understandable traces in Jaeger.
|
|
1
changelog.d/13569.removal
Normal file
1
changelog.d/13569.removal
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Remove redundant `_get_joined_users_from_context` cache. Contributed by Nick @ Beeper (@fizzadar).
|
1
changelog.d/13573.misc
Normal file
1
changelog.d/13573.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Cache user IDs instead of profiles to reduce cache memory usage. Contributed by Nick @ Beeper (@fizzadar).
|
1
changelog.d/13575.misc
Normal file
1
changelog.d/13575.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Optimize how Synapse calculates domains to fetch from during backfill.
|
1
changelog.d/13583.bugfix
Normal file
1
changelog.d/13583.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Faster Room Joins: fix `/make_knock` blocking indefinitely when the room in question is a partial-stated room.
|
1
changelog.d/13585.bugfix
Normal file
1
changelog.d/13585.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix loading the current stream position behind the actual position.
|
1
changelog.d/13586.misc
Normal file
1
changelog.d/13586.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Comment about a better future where we can get the state diff between two events.
|
1
changelog.d/13588.misc
Normal file
1
changelog.d/13588.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Instrument `_check_sigs_and_hash_and_fetch` to trace time spent in child concurrent calls for understandable traces in Jaeger.
|
1
changelog.d/13591.misc
Normal file
1
changelog.d/13591.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Improve performance of `@cachedList`.
|
1
changelog.d/13592.misc
Normal file
1
changelog.d/13592.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Minor speed up of fetching large numbers of push rules.
|
1
changelog.d/13597.misc
Normal file
1
changelog.d/13597.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Optimise push action fetching queries. Contributed by Nick @ Beeper (@fizzadar).
|
1
changelog.d/13600.misc
Normal file
1
changelog.d/13600.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Cache user IDs instead of profiles to reduce cache memory usage. Contributed by Nick @ Beeper (@fizzadar).
|
1
changelog.d/13602.doc
Normal file
1
changelog.d/13602.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Improve the description of the ["chain cover index"](https://matrix-org.github.io/synapse/latest/auth_chain_difference_algorithm.html) used internally by Synapse.
|
1
changelog.d/13603.misc
Normal file
1
changelog.d/13603.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Rename `event_map` to `unpersisted_events` when computing the auth differences.
|
1
changelog.d/13605.misc
Normal file
1
changelog.d/13605.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Refactor `get_users_in_room(room_id)` mis-use with dedicated `get_current_hosts_in_room(room_id)` function.
|
1
changelog.d/13606.misc
Normal file
1
changelog.d/13606.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Use dedicated `get_local_users_in_room(room_id)` function to find local users when calculating `join_authorised_via_users_server` of a `/make_join` request.
|
1
changelog.d/13608.misc
Normal file
1
changelog.d/13608.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Refactor `get_users_in_room(room_id)` mis-use to lookup single local user with dedicated `check_local_user_in_room(...)` function.
|
1
changelog.d/13614.feature
Normal file
1
changelog.d/13614.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Support setting the registration shared secret in a file, via a new `registration_shared_secret_path` configuration option.
|
1
changelog.d/13615.feature
Normal file
1
changelog.d/13615.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Change the default startup behaviour so that any missing "additional" configuration files (signing key, etc) are generated automatically.
|
1
changelog.d/13616.bugfix
Normal file
1
changelog.d/13616.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a longstanding bug in `register_new_matrix_user` which meant it was always necessary to explicitly give a server URL.
|
1
changelog.d/13617.doc
Normal file
1
changelog.d/13617.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Document how ["monthly active users"](https://matrix-org.github.io/synapse/latest/usage/administration/monthly_active_users.html) is calculated and used.
|
1
changelog.d/13627.misc
Normal file
1
changelog.d/13627.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Drop unused column `application_services_state.last_txn`.
|
1
changelog.d/13632.bugfix
Normal file
1
changelog.d/13632.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix the running of MSC1763 retention purge_jobs in deployments with background jobs running on a worker by forcing them back onto the main worker. Contributed by Brad @ Beeper.
|
1
changelog.d/13639.misc
Normal file
1
changelog.d/13639.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Improve readability of Complement CI logs by printing failure results last.
|
1
changelog.d/13640.doc
Normal file
1
changelog.d/13640.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Improve documentation around user registration.
|
1
changelog.d/13645.doc
Normal file
1
changelog.d/13645.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Remove documentation of legacy `frontend_proxy` worker app.
|
1
changelog.d/13647.removal
Normal file
1
changelog.d/13647.removal
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Remove the ability to use direct TCP replication with workers. Direct TCP replication was deprecated in Synapse v1.18.0. Workers now require using Redis.
|
1
changelog.d/13653.removal
Normal file
1
changelog.d/13653.removal
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Remove support for unstable [private read receipts](https://github.com/matrix-org/matrix-spec-proposals/pull/2285).
|
1
changelog.d/13656.doc
Normal file
1
changelog.d/13656.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Clarify documentation that HTTP replication traffic can be protected with a shared secret.
|
1
changelog.d/13657.bugfix
Normal file
1
changelog.d/13657.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a long-standing bug that downloaded media for URL previews was not deleted while database background updates were running.
|
1
changelog.d/13658.bugfix
Normal file
1
changelog.d/13658.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix MSC3030 `/timestamp_to_event` endpoint to return the correct next event when the events have the same timestamp.
|
1
changelog.d/13660.bugfix
Normal file
1
changelog.d/13660.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix bug where we wedge media plugins if clients disconnect early. Introduced in v1.22.0.
|
1
changelog.d/13662.misc
Normal file
1
changelog.d/13662.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Generalise the `@cancellable` annotation so it can be used on functions other than just servlet methods.
|
1
changelog.d/13665.doc
Normal file
1
changelog.d/13665.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Remove unintentional colons from [config manual](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html) headers.
|
1
changelog.d/13671.misc
Normal file
1
changelog.d/13671.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Introduce a `CommonUsageMetrics` class to share some usage metrics between the Prometheus exporter and the phone home stats.
|
1
changelog.d/13672.feature
Normal file
1
changelog.d/13672.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add admin APIs to fetch messages within a particular window of time.
|
1
changelog.d/13678.doc
Normal file
1
changelog.d/13678.doc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Update docs to make enabling metrics more clear.
|
1
changelog.d/13679.misc
Normal file
1
changelog.d/13679.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add some logging to help track down #13444.
|
1
changelog.d/13680.feature
Normal file
1
changelog.d/13680.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Cancel the processing of key query requests when they time out.
|
1
changelog.d/13683.bugfix
Normal file
1
changelog.d/13683.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a long-standing bug which meant that keys for unwhitelisted servers were not returned by `/_matrix/key/v2/query`.
|
1
changelog.d/13687.feature
Normal file
1
changelog.d/13687.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Improve validation of request bodies for the following client-server API endpoints: [`/account/3pid/msisdn/requestToken`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3account3pidmsisdnrequesttoken) and [`/org.matrix.msc3720/account_status`](https://github.com/matrix-org/matrix-spec-proposals/blob/babolivier/user_status/proposals/3720-account-status.md#post-_matrixclientv1account_status).
|
1
changelog.d/13688.docker
Normal file
1
changelog.d/13688.docker
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Update docker image to use a stable version of poetry.
|
1
changelog.d/13689.misc
Normal file
1
changelog.d/13689.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Update poetry lock file for v1.2.0.
|
1
changelog.d/13692.removal
Normal file
1
changelog.d/13692.removal
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Remove support for unstable [private read receipts](https://github.com/matrix-org/matrix-spec-proposals/pull/2285).
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue