mirror of
https://github.com/ansible/awx.git
synced 2026-07-30 17:39:57 -02:30
fix: prefer scm_revision as the cache_id if available
This commit is contained in:
@@ -450,13 +450,14 @@ class Project(UnifiedJobTemplate, ProjectOptions, ResourceMixin, CustomVirtualEn
|
||||
|
||||
@property
|
||||
def cache_id(self):
|
||||
"""This gives the folder name where collections and roles will be saved to so it does not re-download
|
||||
# Prefer scm_revision as the cache key if available. This guarantees that project changes are tracked correctly
|
||||
# even over multiple nodes. The scm_revision is a hex string and thus safe to be used as a directory name.
|
||||
if self.scm_revision:
|
||||
return self.scm_revision
|
||||
|
||||
Normally we want this to track with the last update, because every update should pull new content.
|
||||
This does not count sync jobs, but sync jobs do not update last_job or current_job anyway.
|
||||
If cleanup_jobs deletes the last jobs, then we can fallback to using any given heuristic related
|
||||
to the last job ran.
|
||||
"""
|
||||
# If no scm_revision is available (e.g. non-scm projects), use these. current_job_id and last_job_id are global
|
||||
# IDs in the database. This means that when a project sync runs on one node, all other nodes become outdated,
|
||||
# resulting in unnecessary re-syncs.
|
||||
if self.current_job_id:
|
||||
return str(self.current_job_id)
|
||||
elif self.last_job_id:
|
||||
|
||||
Reference in New Issue
Block a user