From f7387afddbdd31e1a5bab7dd59b050f2a969b8a8 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 7 Apr 2022 01:21:07 +0100 Subject: [PATCH] Fix up healthcheck generation for workers docker image This wasn't quite generating the right thing. --- changelog.d/12405.misc | 1 + docker/Dockerfile-workers | 3 --- docker/configure_workers_and_start.py | 16 +++++++++------- scripts-dev/complement.sh | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 changelog.d/12405.misc diff --git a/changelog.d/12405.misc b/changelog.d/12405.misc new file mode 100644 index 000000000000..697b36c2c95a --- /dev/null +++ b/changelog.d/12405.misc @@ -0,0 +1 @@ +Fix up healthcheck generation for workers docker image. diff --git a/docker/Dockerfile-workers b/docker/Dockerfile-workers index 46f2e17382db..6fb1cdbfb020 100644 --- a/docker/Dockerfile-workers +++ b/docker/Dockerfile-workers @@ -14,9 +14,6 @@ COPY ./docker/conf-workers/* /conf/ # Expose nginx listener port EXPOSE 8080/tcp -# Volume for user-editable config files, logs etc. -VOLUME ["/data"] - # A script to read environment variables and create the necessary # files to run the desired worker configuration. Will start supervisord. COPY ./docker/configure_workers_and_start.py /configure_workers_and_start.py diff --git a/docker/configure_workers_and_start.py b/docker/configure_workers_and_start.py index adbb551cee7f..9b9bddd1a6c8 100755 --- a/docker/configure_workers_and_start.py +++ b/docker/configure_workers_and_start.py @@ -307,7 +307,7 @@ def generate_worker_files(environ, config_path: str, data_dir: str): Args: environ: _Environ[str] - config_path: Where to output the generated Synapse main worker config file. + config_path: The location of the generated Synapse main worker config file. data_dir: The location of the synapse data directory. Where log and user-facing config files live. """ @@ -320,7 +320,8 @@ def generate_worker_files(environ, config_path: str, data_dir: str): # and adding a replication listener. # First read the original config file and extract the listeners block. Then we'll add - # another listener for replication. Later we'll write out the result. + # another listener for replication. Later we'll write out the result to the shared + # config file. listeners = [ { "port": 9093, @@ -386,6 +387,10 @@ def generate_worker_files(environ, config_path: str, data_dir: str): # worker_type + instance # worker_type_counter = {} + # A list of internal endpoints to healthcheck, starting with the main process + # which exists even if no workers do. + healthcheck_urls = ["http://localhost:8080/health"] + # For each worker type specified by the user, create config values for worker_type in worker_types: worker_type = worker_type.strip() @@ -410,6 +415,8 @@ def generate_worker_files(environ, config_path: str, data_dir: str): # Update the shared config with any worker-type specific options shared_config.update(worker_config["shared_extra_conf"]) + healthcheck_urls.append("http://localhost:%d/health" % (worker_port,)) + # Check if more than one instance of this worker type has been specified worker_type_total_count = worker_types.count(worker_type) if worker_type_total_count > 1: @@ -475,15 +482,10 @@ def generate_worker_files(environ, config_path: str, data_dir: str): # Determine the load-balancing upstreams to configure nginx_upstream_config = "" - # At the same time, prepare a list of internal endpoints to healthcheck - # starting with the main process which exists even if no workers do. - healthcheck_urls = ["http://localhost:8080/health"] - for upstream_worker_type, upstream_worker_ports in nginx_upstreams.items(): body = "" for port in upstream_worker_ports: body += " server localhost:%d;\n" % (port,) - healthcheck_urls.append("http://localhost:%d/health" % (port,)) # Add to the list of configured upstreams nginx_upstream_config += NGINX_UPSTREAM_CONFIG_BLOCK.format( diff --git a/scripts-dev/complement.sh b/scripts-dev/complement.sh index d1b59ff0401b..f2043f2fca2d 100755 --- a/scripts-dev/complement.sh +++ b/scripts-dev/complement.sh @@ -52,7 +52,7 @@ if [[ -n "$WORKERS" ]]; then COMPLEMENT_DOCKERFILE=SynapseWorkers.Dockerfile # And provide some more configuration to complement. export COMPLEMENT_CA=true - export COMPLEMENT_SPAWN_HS_TIMEOUT_SECS=25 + export COMPLEMENT_SPAWN_HS_TIMEOUT_SECS=60 else export COMPLEMENT_BASE_IMAGE=complement-synapse COMPLEMENT_DOCKERFILE=Synapse.Dockerfile