forked from MirrorHub/synapse
Don't start Synapse master process if worker_app
is set (#11416)
* Add check to catch syanpse master process starting when workers are configured * add test to verify that starting master process with worker config raises error * newsfragment * specify config.worker.worker_app in check * update test * report specific config option that triggered the error Co-authored-by: reivilibre <oliverw@matrix.org> * clarify error message Co-authored-by: reivilibre <oliverw@matrix.org> Co-authored-by: reivilibre <oliverw@matrix.org>
This commit is contained in:
parent
42bf020463
commit
70cbb1a5e3
3 changed files with 39 additions and 0 deletions
1
changelog.d/11416.misc
Normal file
1
changelog.d/11416.misc
Normal file
|
@ -0,0 +1 @@
|
|||
Add a check to ensure that users cannot start the Synapse master process when `worker_app` is set.
|
|
@ -358,6 +358,13 @@ def setup(config_options: List[str]) -> SynapseHomeServer:
|
|||
# generating config files and shouldn't try to continue.
|
||||
sys.exit(0)
|
||||
|
||||
if config.worker.worker_app:
|
||||
raise ConfigError(
|
||||
"You have specified `worker_app` in the config but are attempting to start a non-worker "
|
||||
"instance. Please use `python -m synapse.app.generic_worker` instead (or remove the option if this is the main process)."
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
events.USE_FROZEN_DICTS = config.server.use_frozen_dicts
|
||||
synapse.util.caches.TRACK_MEMORY_USAGE = config.caches.track_memory_usage
|
||||
|
||||
|
|
31
tests/app/test_homeserver_start.py
Normal file
31
tests/app/test_homeserver_start.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Copyright 2021 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.
|
||||
|
||||
import synapse.app.homeserver
|
||||
from synapse.config._base import ConfigError
|
||||
|
||||
from tests.config.utils import ConfigFileTestCase
|
||||
|
||||
|
||||
class HomeserverAppStartTestCase(ConfigFileTestCase):
|
||||
def test_wrong_start_caught(self):
|
||||
# Generate a config with a worker_app
|
||||
self.generate_config()
|
||||
# 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"])
|
||||
|
||||
# Ensure that starting master process with worker config raises an exception
|
||||
with self.assertRaises(ConfigError):
|
||||
synapse.app.homeserver.setup(["-c", self.config_file])
|
Loading…
Reference in a new issue