From 365673b9e76ce45fef90d1bc1d32ef1391afbd61 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Tue, 17 Jan 2023 12:00:21 -0500 Subject: [PATCH 01/13] added cache-clear service. update dispatcher queues Signed-off-by: Jessica Mack --- Makefile | 6 +++ .../management/commands/run_cache_clear.py | 39 +++++++++++++++++++ .../management/commands/run_dispatcher.py | 2 +- awx/main/tasks/system.py | 13 ++----- awx/settings/defaults.py | 2 + tools/docker-compose/supervisor.conf | 10 +++++ 6 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 awx/main/management/commands/run_cache_clear.py diff --git a/Makefile b/Makefile index d851c08470..fc9a6dd2d6 100644 --- a/Makefile +++ b/Makefile @@ -67,6 +67,12 @@ I18N_FLAG_FILE = .i18n_built VERSION PYTHON_VERSION docker-compose-sources \ .git/hooks/pre-commit +cache-clear: + @if [ "$(VENV_BASE)" ]; then \ + . $(VENV_BASE)/awx/bin/activate; \ + fi; \ + $(PYTHON) manage.py run_cache_clear + clean-tmp: rm -rf tmp/ diff --git a/awx/main/management/commands/run_cache_clear.py b/awx/main/management/commands/run_cache_clear.py new file mode 100644 index 0000000000..5e27172d38 --- /dev/null +++ b/awx/main/management/commands/run_cache_clear.py @@ -0,0 +1,39 @@ +import logging + +from django.core.management.base import BaseCommand +from django.conf import settings +from django.core.cache import cache +from awx.main.dispatch import pg_bus_conn +from awx.conf import settings_registry + +logger = logging.getLogger('awx.main.cache_clear') + + +class Command(BaseCommand): + """ + Cache Clear + Runs as a management command and starts a daemon that listens for a pg_notify message to clear the cache. + """ + + help = 'Launch the cache clear daemon' + + def handle(self, *arg, **options): + try: + with pg_bus_conn(new_connection=True) as conn: + conn.listen("tower_settings_change") + for e in conn.events(yield_timeouts=True): + if e is not None: + logger.info("Cache clear request received. Clearing now") + # clear the cache of the keys in the payload + setting_keys = e.payload + orig_len = len(setting_keys) + for i in range(orig_len): + for dependent_key in settings_registry.get_dependent_settings(setting_keys[i]): + setting_keys.append(dependent_key) + cache_keys = set(setting_keys) + logger.info('cache delete_many(%r)', cache_keys) + cache.delete_many(cache_keys) + except Exception: + # Log unanticipated exception in addition to writing to stderr to get timestamps and other metadata + logger.exception('Encountered unhandled error in cache clear main loop') + raise diff --git a/awx/main/management/commands/run_dispatcher.py b/awx/main/management/commands/run_dispatcher.py index 74a8ac3f94..72fbfbedba 100644 --- a/awx/main/management/commands/run_dispatcher.py +++ b/awx/main/management/commands/run_dispatcher.py @@ -76,7 +76,7 @@ class Command(BaseCommand): consumer = None try: - queues = ['tower_broadcast_all', get_local_queuename()] + queues = ['tower_broadcast_all', 'tower_settings_change', 'rsyslog_configurer', get_local_queuename()] consumer = AWXConsumerPG('dispatcher', TaskWorker(), queues, AutoscalePool(min_workers=4)) consumer.run() except KeyboardInterrupt: diff --git a/awx/main/tasks/system.py b/awx/main/tasks/system.py index 65e10f6a5f..493e559fe9 100644 --- a/awx/main/tasks/system.py +++ b/awx/main/tasks/system.py @@ -61,10 +61,10 @@ from awx.main.utils.common import ( from awx.main.utils.reload import stop_local_services from awx.main.utils.pglock import advisory_lock +from awx.main.utils.external_logging import send_pg_notify from awx.main.tasks.receptor import get_receptor_ctl, worker_info, worker_cleanup, administrative_workunit_reaper, write_receptor_config from awx.main.consumers import emit_channel_notification from awx.main import analytics -from awx.conf import settings_registry from awx.main.analytics.subsystem_metrics import Metrics from rest_framework.exceptions import PermissionDenied @@ -240,15 +240,10 @@ def apply_cluster_membership_policies(): logger.debug('Cluster policy computation finished in {} seconds'.format(time.time() - started_compute)) -@task(queue='tower_broadcast_all') +@task(queue='tower_settings_change') def clear_setting_cache(setting_keys): - orig_len = len(setting_keys) - for i in range(orig_len): - for dependent_key in settings_registry.get_dependent_settings(setting_keys[i]): - setting_keys.append(dependent_key) - cache_keys = set(setting_keys) - logger.debug('cache delete_many(%r)', cache_keys) - cache.delete_many(cache_keys) + # notify the service to clear the cache + send_pg_notify('tower_settings_change', setting_keys) @task(queue='tower_broadcast_all') diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index df70803b29..a1c07524f7 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -846,6 +846,7 @@ LOGGING = { 'awx.main.consumers': {'handlers': ['console', 'file', 'tower_warnings'], 'level': 'INFO'}, 'awx.main.wsbroadcast': {'handlers': ['wsbroadcast']}, 'awx.main.rsyslog_configurer': {'handlers': ['rsyslog_configurer']}, + 'awx.main.cache_clear': {'handlers': ['cache_clear']}, 'awx.main.commands.inventory_import': {'handlers': ['inventory_import'], 'propagate': False}, 'awx.main.tasks': {'handlers': ['task_system', 'external_logger'], 'propagate': False}, 'awx.main.analytics': {'handlers': ['task_system', 'external_logger'], 'level': 'INFO', 'propagate': False}, @@ -877,6 +878,7 @@ handler_config = { 'rbac_migrations': {'filename': 'tower_rbac_migrations.log'}, 'job_lifecycle': {'filename': 'job_lifecycle.log', 'formatter': 'job_lifecycle'}, 'rsyslog_configurer': {'filename': 'rsyslog_configurer.log'}, + 'cache_clear': {'filename': 'cache_clear.log'}, } # If running on a VM, we log to files. When running in a container, we log to stdout. diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf index 5107b463de..234f1b69f4 100644 --- a/tools/docker-compose/supervisor.conf +++ b/tools/docker-compose/supervisor.conf @@ -44,6 +44,16 @@ stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 +[program:awx-cache-clear] +command = make cache-clear +autorestart = true +stopasgroup=true +killasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + [program:awx-uwsgi] command = make uwsgi autorestart = true From 8452f711fff1a2973c6330b4dcf5e00bf7914b23 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Thu, 19 Jan 2023 13:44:29 -0500 Subject: [PATCH 02/13] added launch file, docker, and supervisor changes Signed-off-by: Jessica Mack --- .../files/launch_awx_cache_clear.sh | 22 +++++++++++++++++++ .../roles/dockerfile/templates/Dockerfile.j2 | 1 + .../dockerfile/templates/supervisor.conf.j2 | 13 ++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh diff --git a/tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh b/tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh new file mode 100644 index 0000000000..8a1a3e87fd --- /dev/null +++ b/tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +if [ `id -u` -ge 500 ]; then + echo "awx:x:`id -u`:`id -g`:,,,:/var/lib/awx:/bin/bash" >> /tmp/passwd + cat /tmp/passwd > /etc/passwd + rm /tmp/passwd +fi + +if [ -n "${AWX_KUBE_DEVEL}" ]; then + pushd /awx_devel + make awx-link + popd + + export SDB_NOTIFY_HOST=$MY_POD_IP +fi + +set -e + +wait-for-migrations + +awx-manage provision_instance + +exec supervisord -c /etc/supervisord_task.conf \ No newline at end of file diff --git a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 index 745a74da34..b1a820366e 100644 --- a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 +++ b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 @@ -213,6 +213,7 @@ ADD https://raw.githubusercontent.com/containers/libpod/master/contrib/podmanima ADD tools/ansible/roles/dockerfile/files/launch_awx.sh /usr/bin/launch_awx.sh ADD tools/ansible/roles/dockerfile/files/launch_awx_task.sh /usr/bin/launch_awx_task.sh ADD tools/ansible/roles/dockerfile/files/launch_awx_rsyslog.sh /usr/bin/launch_awx_rsyslog.sh +ADD tools/ansible/roles/dockerfile/files/launch_awx_rsyslog.sh /usr/bin/launch_awx_cache_clear.sh ADD tools/ansible/roles/dockerfile/files/uwsgi.ini /etc/tower/uwsgi.ini ADD {{ template_dest }}/supervisor.conf /etc/supervisord.conf ADD {{ template_dest }}/supervisor_task.conf /etc/supervisord_task.conf diff --git a/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 b/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 index ab94c71839..baf024fd66 100644 --- a/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 +++ b/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 @@ -75,8 +75,19 @@ stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 +[program:awx-cache-clear] +command = awx-manage run_cache_clear +autorestart = true +startsecs = 30 +stopasgroup=true +killasgroup=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stderr +stderr_logfile_maxbytes=0 + [group:tower-processes] -programs=nginx,uwsgi,daphne,wsbroadcast +programs=nginx,uwsgi,daphne,wsbroadcast,awx-cache-clear priority=5 [eventlistener:superwatcher] From 34e18a336002d7dbf016a2bc67c3d52fbb86df36 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Thu, 19 Jan 2023 13:44:50 -0500 Subject: [PATCH 03/13] removed unused import Signed-off-by: Jessica Mack --- awx/main/management/commands/run_cache_clear.py | 1 - 1 file changed, 1 deletion(-) diff --git a/awx/main/management/commands/run_cache_clear.py b/awx/main/management/commands/run_cache_clear.py index 5e27172d38..8ae2615086 100644 --- a/awx/main/management/commands/run_cache_clear.py +++ b/awx/main/management/commands/run_cache_clear.py @@ -1,7 +1,6 @@ import logging from django.core.management.base import BaseCommand -from django.conf import settings from django.core.cache import cache from awx.main.dispatch import pg_bus_conn from awx.conf import settings_registry From c72477c90f1bf3fd0cac39767189ef34b20b0b7b Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Thu, 19 Jan 2023 13:53:27 -0500 Subject: [PATCH 04/13] mock additional pg_notify use in test Signed-off-by: Jessica Mack --- awx/main/tests/functional/api/test_settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/awx/main/tests/functional/api/test_settings.py b/awx/main/tests/functional/api/test_settings.py index bcfa499af3..eb57f27e14 100644 --- a/awx/main/tests/functional/api/test_settings.py +++ b/awx/main/tests/functional/api/test_settings.py @@ -294,6 +294,7 @@ def test_logging_aggregator_valid_settings(put, post, admin, type, host, port, u mock_settings['LOG_AGGREGATOR_PASSWORD'] = password # mock testing pg_notify mocker.patch("awx.conf.views.send_pg_notify", return_value=None) + mocker.patch("awx.main.tasks.system.send_pg_notify", return_value=None) url = reverse('api:setting_singleton_detail', kwargs={'category_slug': 'logging'}) response = put(url, data=mock_settings, user=admin, expect=200) assert type in response.data.get('LOG_AGGREGATOR_TYPE') @@ -316,6 +317,7 @@ def test_logging_aggregator_connection_test_valid(put, post, admin, mocker): mock_settings['LOG_AGGREGATOR_HOST'] = host # mock testing pg_notify mocker.patch("awx.conf.views.send_pg_notify", return_value=None) + mocker.patch("awx.main.tasks.system.send_pg_notify", return_value=None) # POST to save these mock settings url = reverse('api:setting_singleton_detail', kwargs={'category_slug': 'logging'}) put(url, data=mock_settings, user=admin, expect=200) From 4fd8852f67b6bb8f39840335a989bdbda29a0159 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Thu, 26 Jan 2023 11:12:50 -0500 Subject: [PATCH 05/13] removed unneeded launch file and Dockerfile change Signed-off-by: Jessica Mack --- .../files/launch_awx_cache_clear.sh | 22 ------------------- .../roles/dockerfile/templates/Dockerfile.j2 | 1 - 2 files changed, 23 deletions(-) delete mode 100644 tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh diff --git a/tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh b/tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh deleted file mode 100644 index 8a1a3e87fd..0000000000 --- a/tools/ansible/roles/dockerfile/files/launch_awx_cache_clear.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -if [ `id -u` -ge 500 ]; then - echo "awx:x:`id -u`:`id -g`:,,,:/var/lib/awx:/bin/bash" >> /tmp/passwd - cat /tmp/passwd > /etc/passwd - rm /tmp/passwd -fi - -if [ -n "${AWX_KUBE_DEVEL}" ]; then - pushd /awx_devel - make awx-link - popd - - export SDB_NOTIFY_HOST=$MY_POD_IP -fi - -set -e - -wait-for-migrations - -awx-manage provision_instance - -exec supervisord -c /etc/supervisord_task.conf \ No newline at end of file diff --git a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 index b1a820366e..745a74da34 100644 --- a/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 +++ b/tools/ansible/roles/dockerfile/templates/Dockerfile.j2 @@ -213,7 +213,6 @@ ADD https://raw.githubusercontent.com/containers/libpod/master/contrib/podmanima ADD tools/ansible/roles/dockerfile/files/launch_awx.sh /usr/bin/launch_awx.sh ADD tools/ansible/roles/dockerfile/files/launch_awx_task.sh /usr/bin/launch_awx_task.sh ADD tools/ansible/roles/dockerfile/files/launch_awx_rsyslog.sh /usr/bin/launch_awx_rsyslog.sh -ADD tools/ansible/roles/dockerfile/files/launch_awx_rsyslog.sh /usr/bin/launch_awx_cache_clear.sh ADD tools/ansible/roles/dockerfile/files/uwsgi.ini /etc/tower/uwsgi.ini ADD {{ template_dest }}/supervisor.conf /etc/supervisord.conf ADD {{ template_dest }}/supervisor_task.conf /etc/supervisord_task.conf From 423466a5069cdbf91c50ada55423e28ebc16d9dd Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Mon, 30 Jan 2023 10:37:28 -0500 Subject: [PATCH 06/13] switched to using the built in task processing Signed-off-by: Jessica Mack --- .../management/commands/run_cache_clear.py | 20 ++++++++----------- awx/main/tasks/system.py | 4 ++-- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/awx/main/management/commands/run_cache_clear.py b/awx/main/management/commands/run_cache_clear.py index 8ae2615086..d058b8bd6e 100644 --- a/awx/main/management/commands/run_cache_clear.py +++ b/awx/main/management/commands/run_cache_clear.py @@ -1,9 +1,9 @@ import logging +import json from django.core.management.base import BaseCommand -from django.core.cache import cache from awx.main.dispatch import pg_bus_conn -from awx.conf import settings_registry +from awx.main.dispatch.worker.task import TaskWorker logger = logging.getLogger('awx.main.cache_clear') @@ -22,16 +22,12 @@ class Command(BaseCommand): conn.listen("tower_settings_change") for e in conn.events(yield_timeouts=True): if e is not None: - logger.info("Cache clear request received. Clearing now") - # clear the cache of the keys in the payload - setting_keys = e.payload - orig_len = len(setting_keys) - for i in range(orig_len): - for dependent_key in settings_registry.get_dependent_settings(setting_keys[i]): - setting_keys.append(dependent_key) - cache_keys = set(setting_keys) - logger.info('cache delete_many(%r)', cache_keys) - cache.delete_many(cache_keys) + body = json.loads(e.payload) + logger.warning(f"Cache clear request received. Clearing now, payload: {e.payload}") + TaskWorker.run_callable(body) + else: + logger.info('run_clear_cache got timeout') + except Exception: # Log unanticipated exception in addition to writing to stderr to get timestamps and other metadata logger.exception('Encountered unhandled error in cache clear main loop') diff --git a/awx/main/tasks/system.py b/awx/main/tasks/system.py index 493e559fe9..e6f2ad18d3 100644 --- a/awx/main/tasks/system.py +++ b/awx/main/tasks/system.py @@ -242,8 +242,8 @@ def apply_cluster_membership_policies(): @task(queue='tower_settings_change') def clear_setting_cache(setting_keys): - # notify the service to clear the cache - send_pg_notify('tower_settings_change', setting_keys) + # log that cache is being cleared + logger.info(f"clear_setting_cache of keys {setting_keys}") @task(queue='tower_broadcast_all') From f74035fd5cd936f8284036d04e24fe6f43e7b492 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Mon, 30 Jan 2023 10:38:28 -0500 Subject: [PATCH 07/13] these methods don't need to be class methods Signed-off-by: Jessica Mack --- awx/main/dispatch/worker/task.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/awx/main/dispatch/worker/task.py b/awx/main/dispatch/worker/task.py index 04f63002c5..6726aaeae3 100644 --- a/awx/main/dispatch/worker/task.py +++ b/awx/main/dispatch/worker/task.py @@ -26,8 +26,8 @@ class TaskWorker(BaseWorker): `awx.main.dispatch.publish`. """ - @classmethod - def resolve_callable(cls, task): + @staticmethod + def resolve_callable(task): """ Transform a dotted notation task into an imported, callable function, e.g., @@ -46,7 +46,8 @@ class TaskWorker(BaseWorker): return _call - def run_callable(self, body): + @staticmethod + def run_callable(body): """ Given some AMQP message, import the correct Python code and run it. """ From efb20a78c82e3138baac16ce84309b0bcb05ffa0 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Mon, 30 Jan 2023 10:38:49 -0500 Subject: [PATCH 08/13] updated supervisor to include cache-clear Signed-off-by: Jessica Mack --- tools/docker-compose/supervisor.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf index 234f1b69f4..76d7d0dba4 100644 --- a/tools/docker-compose/supervisor.conf +++ b/tools/docker-compose/supervisor.conf @@ -106,7 +106,7 @@ stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [group:tower-processes] -programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsbroadcast,awx-rsyslogd +programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsbroadcast,awx-rsyslogd, awx-cache-clear priority=5 [program:awx-autoreload] From eb974058a25efb084d0ad41d9bd9cfc6911a1890 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Wed, 1 Feb 2023 15:47:27 -0500 Subject: [PATCH 09/13] removed rsyslog queue, updated logger level Signed-off-by: Jessica Mack --- awx/main/management/commands/run_cache_clear.py | 2 +- awx/main/management/commands/run_dispatcher.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/main/management/commands/run_cache_clear.py b/awx/main/management/commands/run_cache_clear.py index d058b8bd6e..dcb5c08aa9 100644 --- a/awx/main/management/commands/run_cache_clear.py +++ b/awx/main/management/commands/run_cache_clear.py @@ -23,7 +23,7 @@ class Command(BaseCommand): for e in conn.events(yield_timeouts=True): if e is not None: body = json.loads(e.payload) - logger.warning(f"Cache clear request received. Clearing now, payload: {e.payload}") + logger.info(f"Cache clear request received. Clearing now, payload: {e.payload}") TaskWorker.run_callable(body) else: logger.info('run_clear_cache got timeout') diff --git a/awx/main/management/commands/run_dispatcher.py b/awx/main/management/commands/run_dispatcher.py index 72fbfbedba..f7079c6a3c 100644 --- a/awx/main/management/commands/run_dispatcher.py +++ b/awx/main/management/commands/run_dispatcher.py @@ -76,7 +76,7 @@ class Command(BaseCommand): consumer = None try: - queues = ['tower_broadcast_all', 'tower_settings_change', 'rsyslog_configurer', get_local_queuename()] + queues = ['tower_broadcast_all', 'tower_settings_change', get_local_queuename()] consumer = AWXConsumerPG('dispatcher', TaskWorker(), queues, AutoscalePool(min_workers=4)) consumer.run() except KeyboardInterrupt: From 20e6354eae0c0e485f4f721c99eea0586c38ee76 Mon Sep 17 00:00:00 2001 From: Jessica Mack Date: Wed, 1 Feb 2023 16:10:41 -0500 Subject: [PATCH 10/13] add functionality back to cache clear method Signed-off-by: Jessica Mack --- awx/main/tasks/system.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/awx/main/tasks/system.py b/awx/main/tasks/system.py index e6f2ad18d3..01d0e58245 100644 --- a/awx/main/tasks/system.py +++ b/awx/main/tasks/system.py @@ -65,6 +65,7 @@ from awx.main.utils.external_logging import send_pg_notify from awx.main.tasks.receptor import get_receptor_ctl, worker_info, worker_cleanup, administrative_workunit_reaper, write_receptor_config from awx.main.consumers import emit_channel_notification from awx.main import analytics +from awx.conf import settings_registry from awx.main.analytics.subsystem_metrics import Metrics from rest_framework.exceptions import PermissionDenied @@ -244,6 +245,13 @@ def apply_cluster_membership_policies(): def clear_setting_cache(setting_keys): # log that cache is being cleared logger.info(f"clear_setting_cache of keys {setting_keys}") + orig_len = len(setting_keys) + for i in range(orig_len): + for dependent_key in settings_registry.get_dependent_settings(setting_keys[i]): + setting_keys.append(dependent_key) + cache_keys = set(setting_keys) + logger.debug('cache delete_many(%r)', cache_keys) + cache.delete_many(cache_keys) @task(queue='tower_broadcast_all') From 804e654cc21730fa829f21b1547ae5d02230f419 Mon Sep 17 00:00:00 2001 From: jessicamack Date: Thu, 9 Feb 2023 14:30:44 -0500 Subject: [PATCH 11/13] remove changes used for dev testing Signed-off-by: jessicamack --- awx/main/management/commands/run_cache_clear.py | 2 -- tools/docker-compose/supervisor.conf | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/awx/main/management/commands/run_cache_clear.py b/awx/main/management/commands/run_cache_clear.py index dcb5c08aa9..61e4b03c49 100644 --- a/awx/main/management/commands/run_cache_clear.py +++ b/awx/main/management/commands/run_cache_clear.py @@ -25,8 +25,6 @@ class Command(BaseCommand): body = json.loads(e.payload) logger.info(f"Cache clear request received. Clearing now, payload: {e.payload}") TaskWorker.run_callable(body) - else: - logger.info('run_clear_cache got timeout') except Exception: # Log unanticipated exception in addition to writing to stderr to get timestamps and other metadata diff --git a/tools/docker-compose/supervisor.conf b/tools/docker-compose/supervisor.conf index 17165ae4af..a843edf342 100644 --- a/tools/docker-compose/supervisor.conf +++ b/tools/docker-compose/supervisor.conf @@ -101,7 +101,7 @@ stdout_events_enabled = true stderr_events_enabled = true [group:tower-processes] -programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsrelay,awx-rsyslogd,awx-heartbeet,awx-cache-clear +programs=awx-dispatcher,awx-receiver,awx-uwsgi,awx-daphne,awx-nginx,awx-wsrelay,awx-rsyslogd,awx-heartbeet priority=5 [program:awx-autoreload] From 64720e1b968cb858e1ee775d44241949b3d410db Mon Sep 17 00:00:00 2001 From: jessicamack Date: Thu, 9 Feb 2023 14:32:16 -0500 Subject: [PATCH 12/13] updated tests to be in line with clear_setting_cache changes Signed-off-by: jessicamack --- awx/main/tests/functional/api/test_settings.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/awx/main/tests/functional/api/test_settings.py b/awx/main/tests/functional/api/test_settings.py index eb57f27e14..bcfa499af3 100644 --- a/awx/main/tests/functional/api/test_settings.py +++ b/awx/main/tests/functional/api/test_settings.py @@ -294,7 +294,6 @@ def test_logging_aggregator_valid_settings(put, post, admin, type, host, port, u mock_settings['LOG_AGGREGATOR_PASSWORD'] = password # mock testing pg_notify mocker.patch("awx.conf.views.send_pg_notify", return_value=None) - mocker.patch("awx.main.tasks.system.send_pg_notify", return_value=None) url = reverse('api:setting_singleton_detail', kwargs={'category_slug': 'logging'}) response = put(url, data=mock_settings, user=admin, expect=200) assert type in response.data.get('LOG_AGGREGATOR_TYPE') @@ -317,7 +316,6 @@ def test_logging_aggregator_connection_test_valid(put, post, admin, mocker): mock_settings['LOG_AGGREGATOR_HOST'] = host # mock testing pg_notify mocker.patch("awx.conf.views.send_pg_notify", return_value=None) - mocker.patch("awx.main.tasks.system.send_pg_notify", return_value=None) # POST to save these mock settings url = reverse('api:setting_singleton_detail', kwargs={'category_slug': 'logging'}) put(url, data=mock_settings, user=admin, expect=200) From 317aca68ac8f4d08564d862982f4eb0e20ebac5a Mon Sep 17 00:00:00 2001 From: Hao Liu Date: Tue, 14 Feb 2023 08:12:33 -0500 Subject: [PATCH 13/13] remove wsbroadcast from supervisor.conf.j2 --- tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 b/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 index 3347513bb8..470c7a0115 100644 --- a/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 +++ b/tools/ansible/roles/dockerfile/templates/supervisor.conf.j2 @@ -86,7 +86,7 @@ stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 [group:tower-processes] -programs=nginx,uwsgi,daphne,wsbroadcast,awx-cache-clear +programs=nginx,uwsgi,daphne,awx-cache-clear priority=5 [eventlistener:superwatcher]