diff --git a/awx/main/tasks/callback.py b/awx/main/tasks/callback.py index 719488caa401..46bed2f3b799 100644 --- a/awx/main/tasks/callback.py +++ b/awx/main/tasks/callback.py @@ -31,6 +31,7 @@ def __init__(self, model=None): self.model = model self.update_attempts = int(settings.DISPATCHER_DB_DOWNTOWN_TOLLERANCE / 5) self.wrapup_event_dispatched = False + self.artifacts_processed = False self.extra_update_fields = {} def update_model(self, pk, _attempt=0, **updates): @@ -211,6 +212,9 @@ def status_handler(self, status_data, runner_config): if result_traceback: self.delay_update(result_traceback=result_traceback) + def artifacts_handler(self, artifact_dir): + self.artifacts_processed = True + class RunnerCallbackForProjectUpdate(RunnerCallback): def __init__(self, *args, **kwargs): diff --git a/awx/main/tasks/jobs.py b/awx/main/tasks/jobs.py index 156000535541..6109acd14246 100644 --- a/awx/main/tasks/jobs.py +++ b/awx/main/tasks/jobs.py @@ -1094,7 +1094,7 @@ def post_run_hook(self, job, status): # actual `run()` call; this _usually_ means something failed in # the pre_run_hook method return - if self.should_use_fact_cache(): + if self.should_use_fact_cache() and self.runner_callback.artifacts_processed: job.log_lifecycle("finish_job_fact_cache") finish_fact_cache( job.get_hosts_for_fact_cache(), diff --git a/awx/main/tasks/receptor.py b/awx/main/tasks/receptor.py index 757319690556..d887c82e8b64 100644 --- a/awx/main/tasks/receptor.py +++ b/awx/main/tasks/receptor.py @@ -464,6 +464,7 @@ def processor(self, resultfile): event_handler=self.task.runner_callback.event_handler, finished_callback=self.task.runner_callback.finished_callback, status_handler=self.task.runner_callback.status_handler, + artifacts_handler=self.task.runner_callback.artifacts_handler, **self.runner_params, )