diff options
Diffstat (limited to 'app/services/ci/expire_pipeline_cache_service.rb')
-rw-r--r-- | app/services/ci/expire_pipeline_cache_service.rb | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/app/services/ci/expire_pipeline_cache_service.rb b/app/services/ci/expire_pipeline_cache_service.rb index 48a6344f576..8622b1a5863 100644 --- a/app/services/ci/expire_pipeline_cache_service.rb +++ b/app/services/ci/expire_pipeline_cache_service.rb @@ -60,6 +60,10 @@ module Ci url_helpers.graphql_etag_pipeline_sha_path(sha) end + def graphql_project_on_demand_scan_counts_path(project) + url_helpers.graphql_etag_project_on_demand_scan_counts_path(project) + end + # Updates ETag caches of a pipeline. # # This logic resides in a separate method so that EE can more easily extend @@ -70,18 +74,25 @@ module Ci def update_etag_cache(pipeline, store) project = pipeline.project - store.touch(project_pipelines_path(project)) - store.touch(commit_pipelines_path(project, pipeline.commit)) unless pipeline.commit.nil? - store.touch(new_merge_request_pipelines_path(project)) + etag_paths = [ + project_pipelines_path(project), + new_merge_request_pipelines_path(project), + graphql_project_on_demand_scan_counts_path(project) + ] + + etag_paths << commit_pipelines_path(project, pipeline.commit) unless pipeline.commit.nil? + each_pipelines_merge_request_path(pipeline) do |path| - store.touch(path) + etag_paths << path end - pipeline.self_with_upstreams_and_downstreams.each do |relative_pipeline| - store.touch(project_pipeline_path(relative_pipeline.project, relative_pipeline)) - store.touch(graphql_pipeline_path(relative_pipeline)) - store.touch(graphql_pipeline_sha_path(relative_pipeline.sha)) + pipeline.self_with_upstreams_and_downstreams.includes(project: [:route, { namespace: :route }]).each do |relative_pipeline| # rubocop: disable CodeReuse/ActiveRecord + etag_paths << project_pipeline_path(relative_pipeline.project, relative_pipeline) + etag_paths << graphql_pipeline_path(relative_pipeline) + etag_paths << graphql_pipeline_sha_path(relative_pipeline.sha) end + + store.touch(*etag_paths) end def url_helpers |