summary refs log tree commit diff
path: root/synctl
diff options
context:
space:
mode:
authorWaylon Cude <waylon531@gmail.com>2020-11-23 07:20:49 -0800
committerGitHub <noreply@github.com>2020-11-23 15:20:49 +0000
commit7127855741faaf9544339db4faa7d25b0158fdfc (patch)
tree357541dba49592d7654225d5eba7278a184826d7 /synctl
parentImprove logging of the mapping from SSO IDs to Matrix IDs. (#8773) (diff)
downloadsynapse-7127855741faaf9544339db4faa7d25b0158fdfc.tar.xz
Fix synctl and duplicate worker spawning (#8798)
Synctl did not check if a worker thread was already running when using
`synctl start` and would naively start a fresh copy. This would
sometimes lead to cases where many duplicate copies of a single worker
would run.

This fix adds a pid check when starting worker threads and synctl will
now refuse to start individual workers if they're already running.
Diffstat (limited to '')
-rwxr-xr-xsynctl7
1 files changed, 7 insertions, 0 deletions
diff --git a/synctl b/synctl

index 9395ebd048..cfa9cec0c4 100755 --- a/synctl +++ b/synctl
@@ -358,6 +358,13 @@ def main(): for worker in workers: env = os.environ.copy() + # Skip starting a worker if its already running + if os.path.exists(worker.pidfile) and pid_running( + int(open(worker.pidfile).read()) + ): + print(worker.app + " already running") + continue + if worker.cache_factor: os.environ["SYNAPSE_CACHE_FACTOR"] = str(worker.cache_factor)