2 files changed, 8 insertions, 0 deletions
diff --git a/changelog.d/8798.bugfix b/changelog.d/8798.bugfix
new file mode 100644
index 0000000000..9bdb2b51ea
--- /dev/null
+++ b/changelog.d/8798.bugfix
@@ -0,0 +1 @@
+Fix a bug where synctl could spawn duplicate copies of a worker. Contributed by Waylon Cude.
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)
|