From 65e19c4fbd9d1028be1f50d680753e77c090f792 Mon Sep 17 00:00:00 2001 From: Alex Vandiver Date: Fri, 25 Mar 2022 17:23:21 -0700 Subject: [PATCH] supervisor: 'foo:*' also matches 'foo'. 7c4293a7d3d738e2785ca39c01aee8d42051c9ba switched to checking if the service was already running, and use `supervisorctl start` if it was not. Unfortunately, `list_supervisor_processes("zulip-tornado:*")` did not include `zulip-tornado`, and as such a non-sharded process was always considered to _not_ be running, and was thus started, not restarted. Starting an already-started service is a no-op, and thus non-sharded tornado processes were never restarted. The observed behaviour is that requests to the tornado process attempt to load the user from the cache, with a different prefix from Django, and immediately invalidate the session and eject the user back to the login page. Fix the `list_supervisor_processes` logic to match without the trailing `:*`. --- scripts/lib/supervisor.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/lib/supervisor.py b/scripts/lib/supervisor.py index a5fde0f8d0..a3cf445f66 100644 --- a/scripts/lib/supervisor.py +++ b/scripts/lib/supervisor.py @@ -42,7 +42,10 @@ def list_supervisor_processes( if filter_names: match = False for filter_name in filter_names: - if filter_name.endswith(":*") and name.startswith(filter_name[:-1]): + # zulip-tornado:* matches zulip-tornado:9800 and zulip-tornado + if filter_name.endswith(":*") and ( + name.startswith(filter_name[:-1]) or name == filter_name[:-2] + ): match = True break if name == filter_name: