summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/api/files.rb2
-rw-r--r--lib/banzai/filter/abstract_reference_filter.rb19
2 files changed, 16 insertions, 5 deletions
diff --git a/lib/api/files.rb b/lib/api/files.rb
index 532a317c89e..2e79e22e649 100644
--- a/lib/api/files.rb
+++ b/lib/api/files.rb
@@ -68,7 +68,7 @@ module API
ref: params[:ref],
blob_id: blob.id,
commit_id: commit.id,
- last_commit_id: repo.last_commit_for_path(commit.sha, params[:file_path]).id
+ last_commit_id: repo.last_commit_id_for_path(commit.sha, params[:file_path])
}
end
diff --git a/lib/banzai/filter/abstract_reference_filter.rb b/lib/banzai/filter/abstract_reference_filter.rb
index fd74eeaebe7..6d04f68c8f9 100644
--- a/lib/banzai/filter/abstract_reference_filter.rb
+++ b/lib/banzai/filter/abstract_reference_filter.rb
@@ -254,15 +254,26 @@ module Banzai
# Returns projects for the given paths.
def find_projects_for_paths(paths)
if RequestStore.active?
- to_query = paths - project_refs_cache.keys
+ cache = project_refs_cache
+ to_query = paths - cache.keys
unless to_query.empty?
- projects_relation_for_paths(to_query).each do |project|
- get_or_set_cache(project_refs_cache, project.path_with_namespace) { project }
+ projects = projects_relation_for_paths(to_query)
+
+ found = []
+ projects.each do |project|
+ ref = project.path_with_namespace
+ get_or_set_cache(cache, ref) { project }
+ found << ref
+ end
+
+ not_found = to_query - found
+ not_found.each do |ref|
+ get_or_set_cache(cache, ref) { nil }
end
end
- project_refs_cache.slice(*paths).values
+ cache.slice(*paths).values.compact
else
projects_relation_for_paths(paths)
end