mirror of
https://github.com/ansible/awx.git
synced 2026-07-28 00:19:54 -02:30
AAP-65883: Refactor clear_setting_cache to use DAB utility (#16469)
* AAP-65883: Refactor clear_setting_cache to use DAB shared utility Delegate cache invalidation logic to ansible_base.lib.cache.tasks.clear_cache, passing AWX-specific dependent key resolution (settings_registry) and post-invalidation hook (LOG_AGGREGATOR_LEVEL reconfiguration) as callbacks. Requires: ansible/django-ansible-base AAP-65883/dab-cache-invalidation-job Assisted-by: Claude Code / Opus 4.6 (Anthropic) * AAP-65883: Extract helper functions to module level Move _resolve_setting_dependents and _post_setting_invalidation out of clear_setting_cache for better stack traces and independent testability per review feedback (John Westcott). Assisted-by: Claude Code / Opus 4.6 (Anthropic)
This commit is contained in:
@@ -19,6 +19,7 @@ from dispatcherd.publish import task
|
|||||||
# Runner
|
# Runner
|
||||||
import ansible_runner.cleanup
|
import ansible_runner.cleanup
|
||||||
import psycopg
|
import psycopg
|
||||||
|
from ansible_base.lib.cache.tasks import clear_cache as dab_clear_cache
|
||||||
from ansible_base.lib.utils.db import advisory_lock
|
from ansible_base.lib.utils.db import advisory_lock
|
||||||
|
|
||||||
# django-ansible-base
|
# django-ansible-base
|
||||||
@@ -331,24 +332,22 @@ def apply_cluster_membership_policies():
|
|||||||
logger.debug('Cluster policy computation finished in {} seconds'.format(time.time() - started_compute))
|
logger.debug('Cluster policy computation finished in {} seconds'.format(time.time() - started_compute))
|
||||||
|
|
||||||
|
|
||||||
@task(queue='tower_settings_change', timeout=600)
|
def _resolve_setting_dependents(key):
|
||||||
def clear_setting_cache(setting_keys):
|
return settings_registry.get_dependent_settings(key)
|
||||||
# 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)
|
|
||||||
|
|
||||||
if 'LOG_AGGREGATOR_LEVEL' in setting_keys:
|
|
||||||
|
def _post_setting_invalidation(invalidated_keys):
|
||||||
|
if 'LOG_AGGREGATOR_LEVEL' in invalidated_keys:
|
||||||
ctl = get_control_from_settings()
|
ctl = get_control_from_settings()
|
||||||
ctl.queuename = get_task_queuename()
|
ctl.queuename = get_task_queuename()
|
||||||
ctl.control('set_log_level', data={'level': settings.LOG_AGGREGATOR_LEVEL})
|
ctl.control('set_log_level', data={'level': settings.LOG_AGGREGATOR_LEVEL})
|
||||||
|
|
||||||
|
|
||||||
|
@task(queue='tower_settings_change', timeout=600)
|
||||||
|
def clear_setting_cache(setting_keys):
|
||||||
|
dab_clear_cache(setting_keys, _resolve_setting_dependents, _post_setting_invalidation)
|
||||||
|
|
||||||
|
|
||||||
@task(queue='tower_broadcast_all', timeout=600)
|
@task(queue='tower_broadcast_all', timeout=600)
|
||||||
def delete_project_files(project_path):
|
def delete_project_files(project_path):
|
||||||
# TODO: possibly implement some retry logic
|
# TODO: possibly implement some retry logic
|
||||||
|
|||||||
Reference in New Issue
Block a user