scripts: Fix check for services running when upgrading.

When upgrading from a pre-4.0 release, scripts/stop-server logic would
check whether supervisord configuration files were present to
determine what it needed to restart, but only considered paths to
those files that are introduced in Zulip 4.0.

Fixed #18493.
This commit is contained in:
Tim Abbott 2021-05-13 18:08:38 -07:00
parent c6de9736b8
commit de47feab43
3 changed files with 25 additions and 4 deletions

View File

@ -600,7 +600,21 @@ def is_vagrant_env_host(path: str) -> bool:
def has_application_server() -> bool: def has_application_server() -> bool:
return os.path.exists("/etc/supervisor/conf.d/zulip/zulip.conf") return (
# Current path
os.path.exists("/etc/supervisor/conf.d/zulip/zulip.conf")
# Old path, relevant for upgrades
or os.path.exists("/etc/supervisor/conf.d/zulip.conf")
)
def has_process_fts_updates() -> bool:
return (
# Current path
os.path.exists("/etc/supervisor/conf.d/zulip/zulip_db.conf")
# Old path, relevant for upgrades
or os.path.exists("/etc/supervisor/conf.d/zulip_db.conf")
)
def deport(netloc: str) -> str: def deport(netloc: str) -> str:

View File

@ -17,6 +17,7 @@ from scripts.lib.zulip_tools import (
get_config_file, get_config_file,
get_tornado_ports, get_tornado_ports,
has_application_server, has_application_server,
has_process_fts_updates,
overwrite_symlink, overwrite_symlink,
) )
@ -90,7 +91,7 @@ if has_application_server():
worker_status.check_returncode() worker_status.check_returncode()
workers.extend(status_line.split()[0] for status_line in worker_status.stdout.splitlines()) workers.extend(status_line.split()[0] for status_line in worker_status.stdout.splitlines())
if os.path.exists("/etc/supervisor/conf.d/zulip/zulip_db.conf"): if has_process_fts_updates():
workers.append("process-fts-updates") workers.append("process-fts-updates")
if action == "restart" and len(workers) > 0: if action == "restart" and len(workers) > 0:

View File

@ -7,7 +7,13 @@ import sys
import time import time
sys.path.append(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
from scripts.lib.zulip_tools import ENDC, OKGREEN, WARNING, has_application_server from scripts.lib.zulip_tools import (
ENDC,
OKGREEN,
WARNING,
has_application_server,
has_process_fts_updates,
)
deploy_path = os.path.realpath(os.path.join(os.path.dirname(__file__), "..")) deploy_path = os.path.realpath(os.path.join(os.path.dirname(__file__), ".."))
os.chdir(deploy_path) os.chdir(deploy_path)
@ -22,7 +28,7 @@ logging.basicConfig(format="%(asctime)s stop-server: %(message)s", level=logging
services = [] services = []
# Start with the least-critical services: # Start with the least-critical services:
if os.path.exists("/etc/supervisor/conf.d/zulip/zulip_db.conf"): if has_process_fts_updates():
services.append("process-fts-updates") services.append("process-fts-updates")
if has_application_server(): if has_application_server():