diff --git a/synapse/app/_base.py b/synapse/app/_base.py
index 807ee3d46e..5fc59c1be1 100644
--- a/synapse/app/_base.py
+++ b/synapse/app/_base.py
@@ -32,6 +32,7 @@ from typing import (
Iterable,
List,
NoReturn,
+ Optional,
Tuple,
cast,
)
@@ -129,7 +130,7 @@ def start_worker_reactor(
def start_reactor(
appname: str,
soft_file_limit: int,
- gc_thresholds: Tuple[int, int, int],
+ gc_thresholds: Optional[Tuple[int, int, int]],
pid_file: str,
daemonize: bool,
print_pidfile: bool,
diff --git a/synapse/app/generic_worker.py b/synapse/app/generic_worker.py
index b4bed5bf40..e256de2003 100644
--- a/synapse/app/generic_worker.py
+++ b/synapse/app/generic_worker.py
@@ -505,6 +505,10 @@ def start(config_options: List[str]) -> None:
_base.start_worker_reactor("synapse-generic-worker", config)
-if __name__ == "__main__":
+def main() -> None:
with LoggingContext("main"):
start(sys.argv[1:])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index 52541faab2..dd76e07321 100644
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -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
|