SCARY HACKS
This commit is contained in:
@@ -26,6 +26,9 @@ COPY conf-workers/workers-shared.yaml /conf/workers/shared.yaml
|
||||
WORKDIR /data
|
||||
|
||||
COPY conf-workers/postgres.supervisord.conf /etc/supervisor/conf.d/postgres.conf
|
||||
COPY conf-workers/synapse_forking.supervisord.conf.j2 /conf/
|
||||
|
||||
COPY conf/log_config.yaml.j2 /conf/
|
||||
|
||||
# Copy the entrypoint
|
||||
COPY conf-workers/start-complement-synapse-workers.sh /
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
[program:synapse_forking]
|
||||
# TODO prefix-log will be no good. We'll have to hack around ourselves.
|
||||
command=/usr/local/bin/prefix-log /usr/local/bin/python -m synapse.app._complement_fork_starter /data/homeserver.yaml \
|
||||
{%- for worker_config in worker_configs %}
|
||||
-- \
|
||||
{{ worker_config.app }}
|
||||
--config-path="{{ worker_config.config_path }}" \
|
||||
--config-path=/conf/workers/shared.yaml \
|
||||
--config-path=/conf/workers/{{ worker_config.name }}.yaml \
|
||||
{%- endfor %}
|
||||
-- \
|
||||
synapse.app.homeserver \
|
||||
--config-path="{{ main_config_path }}" \
|
||||
--config-path=/conf/workers/shared.yaml
|
||||
|
||||
autorestart=unexpected
|
||||
priority=500
|
||||
exitcodes=0
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
|
||||
# Required because the forking launcher creates subprocesses but doesn't
|
||||
# handle signals for us.
|
||||
stopasgroup=true
|
||||
@@ -2,7 +2,11 @@ version: 1
|
||||
|
||||
formatters:
|
||||
precise:
|
||||
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
|
||||
{% if worker_name %}
|
||||
format: '{{ worker_name }} | %(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
|
||||
{% else %}
|
||||
format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
|
||||
{% endif %}
|
||||
|
||||
filters:
|
||||
context:
|
||||
@@ -28,17 +28,17 @@ stderr_logfile_maxbytes=0
|
||||
username=redis
|
||||
autorestart=true
|
||||
|
||||
[program:synapse_main]
|
||||
command=/usr/local/bin/prefix-log /usr/local/bin/python -m synapse.app.homeserver --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml
|
||||
priority=10
|
||||
# Log startup failures to supervisord's stdout/err
|
||||
# Regular synapse logs will still go in the configured data directory
|
||||
stdout_logfile=/dev/stdout
|
||||
stdout_logfile_maxbytes=0
|
||||
stderr_logfile=/dev/stderr
|
||||
stderr_logfile_maxbytes=0
|
||||
autorestart=unexpected
|
||||
exitcodes=0
|
||||
## [program:synapse_main]
|
||||
## command=/usr/local/bin/prefix-log /usr/local/bin/python -m synapse.app.homeserver --config-path="{{ main_config_path }}" --config-path=/conf/workers/shared.yaml
|
||||
## priority=10
|
||||
## # Log startup failures to supervisord's stdout/err
|
||||
## # Regular synapse logs will still go in the configured data directory
|
||||
## stdout_logfile=/dev/stdout
|
||||
## stdout_logfile_maxbytes=0
|
||||
## stderr_logfile=/dev/stderr
|
||||
## stderr_logfile_maxbytes=0
|
||||
## autorestart=unexpected
|
||||
## exitcodes=0
|
||||
|
||||
# Additional process blocks
|
||||
{{ worker_config }}
|
||||
{{ worker_config }}
|
||||
|
||||
@@ -401,8 +401,11 @@ def generate_worker_files(
|
||||
# which exists even if no workers do.
|
||||
healthcheck_urls = ["http://localhost:8080/health"]
|
||||
|
||||
worker_configs: List[Dict[str, Any]] = []
|
||||
|
||||
# For each worker type specified by the user, create config values
|
||||
for worker_type in worker_types:
|
||||
startup_config: Dict[str, Any] = {}
|
||||
worker_type = worker_type.strip()
|
||||
|
||||
worker_config = WORKERS_CONFIG.get(worker_type)
|
||||
@@ -438,6 +441,8 @@ def generate_worker_files(
|
||||
# Enable the worker in supervisord
|
||||
supervisord_config += SUPERVISORD_PROCESS_CONFIG_BLOCK.format_map(worker_config)
|
||||
|
||||
worker_configs.append(worker_config)
|
||||
|
||||
# Add nginx location blocks for this worker's endpoints (if any are defined)
|
||||
for pattern in worker_config["endpoint_patterns"]:
|
||||
# Determine whether we need to load-balance this worker
|
||||
@@ -530,7 +535,15 @@ def generate_worker_files(
|
||||
"/conf/supervisord.conf.j2",
|
||||
"/etc/supervisor/supervisord.conf",
|
||||
main_config_path=config_path,
|
||||
worker_config=supervisord_config,
|
||||
#worker_config=supervisord_config,
|
||||
worker_config="",
|
||||
)
|
||||
|
||||
convert(
|
||||
"/conf/synapse_forking.supervisord.conf.j2",
|
||||
"/etc/supervisor/conf.d/synapse_forking.supervisor.conf",
|
||||
worker_configs=worker_configs,
|
||||
main_config_path=config_path,
|
||||
)
|
||||
|
||||
# healthcheck config
|
||||
@@ -562,7 +575,7 @@ def generate_worker_log_config(
|
||||
# Render and write the file
|
||||
log_config_filepath = "/conf/workers/{name}.log.config".format(name=worker_name)
|
||||
convert(
|
||||
"/conf/log.config",
|
||||
"/conf/log_config.yaml.j2",
|
||||
log_config_filepath,
|
||||
worker_name=worker_name,
|
||||
**extra_log_template_args,
|
||||
|
||||
Reference in New Issue
Block a user