mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-21 17:15:38 +03:00
Merge branch 'master' into develop
This commit is contained in:
commit
a1154dfc20
11 changed files with 76 additions and 7 deletions
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
|
@ -314,7 +314,7 @@ jobs:
|
|||
# There aren't wheels for some of the older deps, so we need to install
|
||||
# their build dependencies
|
||||
- run: |
|
||||
sudo apt update
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qq install build-essential libffi-dev python-dev \
|
||||
libxml2-dev libxslt-dev xmlsec1 zlib1g-dev libjpeg-dev libwebp-dev
|
||||
|
||||
|
|
19
CHANGES.md
19
CHANGES.md
|
@ -1,3 +1,22 @@
|
|||
Synapse 1.84.1 (2023-05-26)
|
||||
===========================
|
||||
|
||||
This patch release fixes a major issue with homeservers that do not have an `instance_map` defined but which do use workers.
|
||||
If you have already upgraded to Synapse 1.84.0 and your homeserver is working normally, then there is no need to update to this patch release.
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fix a bug introduced in Synapse v1.84.0 where workers do not start up when no `instance_map` was provided. ([\#15672](https://github.com/matrix-org/synapse/issues/15672))
|
||||
|
||||
|
||||
Internal Changes
|
||||
----------------
|
||||
|
||||
- Add `dch` and `notify-send` to the development Nix flake so that the release script can be used. ([\#15673](https://github.com/matrix-org/synapse/issues/15673))
|
||||
|
||||
|
||||
Synapse 1.84.0 (2023-05-23)
|
||||
===========================
|
||||
|
||||
|
|
6
debian/changelog
vendored
6
debian/changelog
vendored
|
@ -1,3 +1,9 @@
|
|||
matrix-synapse-py3 (1.84.1) stable; urgency=medium
|
||||
|
||||
* New Synapse release 1.84.1.
|
||||
|
||||
-- Synapse Packaging team <packages@matrix.org> Fri, 26 May 2023 16:15:30 +0100
|
||||
|
||||
matrix-synapse-py3 (1.84.0) stable; urgency=medium
|
||||
|
||||
* New Synapse release 1.84.0.
|
||||
|
|
|
@ -95,6 +95,10 @@
|
|||
|
||||
# For building the Synapse documentation website.
|
||||
mdbook
|
||||
|
||||
# For releasing Synapse
|
||||
debian-devscripts # (`dch` for manipulating the Debian changelog)
|
||||
libnotify # (the release script uses `notify-send` to tell you when CI jobs are done)
|
||||
];
|
||||
|
||||
# Install Python and manage a virtualenv with Poetry.
|
||||
|
|
|
@ -89,7 +89,7 @@ manifest-path = "rust/Cargo.toml"
|
|||
|
||||
[tool.poetry]
|
||||
name = "matrix-synapse"
|
||||
version = "1.84.0"
|
||||
version = "1.84.1"
|
||||
description = "Homeserver for the Matrix decentralised comms protocol"
|
||||
authors = ["Matrix.org Team and Contributors <packages@matrix.org>"]
|
||||
license = "Apache-2.0"
|
||||
|
|
|
@ -222,7 +222,7 @@ class WorkerConfig(Config):
|
|||
# itself doesn't need this data as it would never have to talk to itself.
|
||||
instance_map: Dict[str, Any] = config.get("instance_map", {})
|
||||
|
||||
if instance_map and self.instance_name is not MAIN_PROCESS_INSTANCE_NAME:
|
||||
if self.instance_name is not MAIN_PROCESS_INSTANCE_NAME:
|
||||
# The host used to connect to the main synapse
|
||||
main_host = config.get("worker_replication_host", None)
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@ class HomeserverAppStartTestCase(ConfigFileTestCase):
|
|||
# Add a blank line as otherwise the next addition ends up on a line with a comment
|
||||
self.add_lines_to_config([" "])
|
||||
self.add_lines_to_config(["worker_app: test_worker_app"])
|
||||
self.add_lines_to_config(["worker_replication_host: 127.0.0.1"])
|
||||
self.add_lines_to_config(["worker_replication_http_port: 0"])
|
||||
|
||||
# Ensure that starting master process with worker config raises an exception
|
||||
with self.assertRaises(ConfigError):
|
||||
|
|
|
@ -42,6 +42,7 @@ class FederationReaderOpenIDListenerTests(HomeserverTestCase):
|
|||
# have to tell the FederationHandler not to try to access stuff that is only
|
||||
# in the primary store.
|
||||
conf["worker_app"] = "yes"
|
||||
conf["instance_map"] = {"main": {"host": "127.0.0.1", "port": 0}}
|
||||
|
||||
return conf
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ from unittest.mock import Mock
|
|||
from immutabledict import immutabledict
|
||||
|
||||
from synapse.config import ConfigError
|
||||
from synapse.config.workers import WorkerConfig
|
||||
from synapse.config.workers import InstanceLocationConfig, WorkerConfig
|
||||
|
||||
from tests.unittest import TestCase
|
||||
|
||||
|
@ -94,6 +94,7 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
# so that it doesn't raise an exception here.
|
||||
# (This is not read by `_should_this_worker_perform_duty`.)
|
||||
"notify_appservices": False,
|
||||
"instance_map": {"main": {"host": "127.0.0.1", "port": 0}},
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -138,7 +139,9 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
"""
|
||||
|
||||
main_process_config = self._make_worker_config(
|
||||
worker_app="synapse.app.homeserver", worker_name=None
|
||||
worker_app="synapse.app.homeserver",
|
||||
worker_name=None,
|
||||
extras={"instance_map": {"main": {"host": "127.0.0.1", "port": 0}}},
|
||||
)
|
||||
|
||||
self.assertTrue(
|
||||
|
@ -203,6 +206,7 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
# so that it doesn't raise an exception here.
|
||||
# (This is not read by `_should_this_worker_perform_duty`.)
|
||||
"notify_appservices": False,
|
||||
"instance_map": {"main": {"host": "127.0.0.1", "port": 0}},
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -236,7 +240,9 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
Tests new config options. This is for the master's config.
|
||||
"""
|
||||
main_process_config = self._make_worker_config(
|
||||
worker_app="synapse.app.homeserver", worker_name=None
|
||||
worker_app="synapse.app.homeserver",
|
||||
worker_name=None,
|
||||
extras={"instance_map": {"main": {"host": "127.0.0.1", "port": 0}}},
|
||||
)
|
||||
|
||||
self.assertTrue(
|
||||
|
@ -262,7 +268,9 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
Tests new config options. This is for the worker's config.
|
||||
"""
|
||||
appservice_worker_config = self._make_worker_config(
|
||||
worker_app="synapse.app.generic_worker", worker_name="worker1"
|
||||
worker_app="synapse.app.generic_worker",
|
||||
worker_name="worker1",
|
||||
extras={"instance_map": {"main": {"host": "127.0.0.1", "port": 0}}},
|
||||
)
|
||||
|
||||
self.assertTrue(
|
||||
|
@ -298,6 +306,7 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
extras={
|
||||
"notify_appservices_from_worker": "worker2",
|
||||
"update_user_directory_from_worker": "worker1",
|
||||
"instance_map": {"main": {"host": "127.0.0.1", "port": 0}},
|
||||
},
|
||||
)
|
||||
self.assertFalse(worker1_config.should_notify_appservices)
|
||||
|
@ -309,7 +318,33 @@ class WorkerDutyConfigTestCase(TestCase):
|
|||
extras={
|
||||
"notify_appservices_from_worker": "worker2",
|
||||
"update_user_directory_from_worker": "worker1",
|
||||
"instance_map": {"main": {"host": "127.0.0.1", "port": 0}},
|
||||
},
|
||||
)
|
||||
self.assertTrue(worker2_config.should_notify_appservices)
|
||||
self.assertFalse(worker2_config.should_update_user_directory)
|
||||
|
||||
def test_worker_instance_map_compat(self) -> None:
|
||||
"""
|
||||
Test that `worker_replication_*` settings are compatibly handled by
|
||||
adding them to the instance map as a `main` entry.
|
||||
"""
|
||||
|
||||
worker1_config = self._make_worker_config(
|
||||
worker_app="synapse.app.generic_worker",
|
||||
worker_name="worker1",
|
||||
extras={
|
||||
"notify_appservices_from_worker": "worker2",
|
||||
"update_user_directory_from_worker": "worker1",
|
||||
"worker_replication_host": "127.0.0.42",
|
||||
"worker_replication_http_port": 1979,
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
worker1_config.instance_map,
|
||||
{
|
||||
"master": InstanceLocationConfig(
|
||||
host="127.0.0.42", port=1979, tls=False
|
||||
),
|
||||
},
|
||||
)
|
||||
|
|
|
@ -32,6 +32,7 @@ class FederationAckTestCase(HomeserverTestCase):
|
|||
config["worker_app"] = "synapse.app.generic_worker"
|
||||
config["worker_name"] = "federation_sender1"
|
||||
config["federation_sender_instances"] = ["federation_sender1"]
|
||||
config["instance_map"] = {"main": {"host": "127.0.0.1", "port": 0}}
|
||||
return config
|
||||
|
||||
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
|
||||
|
|
|
@ -55,6 +55,7 @@ class WorkerSchemaTests(HomeserverTestCase):
|
|||
|
||||
# Mark this as a worker app.
|
||||
conf["worker_app"] = "yes"
|
||||
conf["instance_map"] = {"main": {"host": "127.0.0.1", "port": 0}}
|
||||
|
||||
return conf
|
||||
|
||||
|
|
Loading…
Reference in a new issue