Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-09-14 21:12:06 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-14 21:12:06 +0300
commit30b01621d3e9e83f9f2d8a94dba6888eba7e8cc1 (patch)
tree309eb7898d9d73ab1d1c0cd65e43757a7201edfe /lib/gitlab
parentb119503b7039d1e79b87300a145afdcd1145c2d6 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/cycle_analytics/summary/base.rb4
-rw-r--r--lib/gitlab/cycle_analytics/summary/deploy.rb2
-rw-r--r--lib/gitlab/database/load_balancing/load_balancer.rb2
-rw-r--r--lib/gitlab/gitaly_client/commit_service.rb1
-rw-r--r--lib/gitlab/pagination/gitaly_keyset_pager.rb34
5 files changed, 33 insertions, 10 deletions
diff --git a/lib/gitlab/cycle_analytics/summary/base.rb b/lib/gitlab/cycle_analytics/summary/base.rb
index 50a8f189df0..e30e526f017 100644
--- a/lib/gitlab/cycle_analytics/summary/base.rb
+++ b/lib/gitlab/cycle_analytics/summary/base.rb
@@ -16,6 +16,10 @@ module Gitlab
def value
raise NotImplementedError, "Expected #{self.name} to implement value"
end
+
+ private
+
+ attr_reader :project, :options
end
end
end
diff --git a/lib/gitlab/cycle_analytics/summary/deploy.rb b/lib/gitlab/cycle_analytics/summary/deploy.rb
index ea16226a865..403cec5ed19 100644
--- a/lib/gitlab/cycle_analytics/summary/deploy.rb
+++ b/lib/gitlab/cycle_analytics/summary/deploy.rb
@@ -24,3 +24,5 @@ module Gitlab
end
end
end
+
+Gitlab::CycleAnalytics::Summary::Deploy.prepend_mod_with('Gitlab::CycleAnalytics::Summary::Deploy')
diff --git a/lib/gitlab/database/load_balancing/load_balancer.rb b/lib/gitlab/database/load_balancing/load_balancer.rb
index 0fb8faae8ce..9b00b323301 100644
--- a/lib/gitlab/database/load_balancing/load_balancer.rb
+++ b/lib/gitlab/database/load_balancing/load_balancer.rb
@@ -245,7 +245,7 @@ module Gitlab
end
def request_cache
- base = RequestStore[:gitlab_load_balancer] ||= {}
+ base = SafeRequestStore[:gitlab_load_balancer] ||= {}
base[self] ||= {}
end
end
diff --git a/lib/gitlab/gitaly_client/commit_service.rb b/lib/gitlab/gitaly_client/commit_service.rb
index ddf04bd8e79..75588ad980c 100644
--- a/lib/gitlab/gitaly_client/commit_service.rb
+++ b/lib/gitlab/gitaly_client/commit_service.rb
@@ -127,6 +127,7 @@ module Gitlab
entries = response.flat_map do |message|
cursor = message.pagination_cursor if message.pagination_cursor
+
message.entries.map do |gitaly_tree_entry|
Gitlab::Git::Tree.new(
id: gitaly_tree_entry.oid,
diff --git a/lib/gitlab/pagination/gitaly_keyset_pager.rb b/lib/gitlab/pagination/gitaly_keyset_pager.rb
index b05891066ac..a16bf7a379c 100644
--- a/lib/gitlab/pagination/gitaly_keyset_pager.rb
+++ b/lib/gitlab/pagination/gitaly_keyset_pager.rb
@@ -14,23 +14,39 @@ module Gitlab
# It is expected that the given finder will respond to `execute` method with `gitaly_pagination: true` option
# and supports pagination via gitaly.
def paginate(finder)
- return paginate_via_gitaly(finder) if keyset_pagination_enabled?
- return paginate_first_page_via_gitaly(finder) if paginate_first_page?
+ return paginate_via_gitaly(finder) if keyset_pagination_enabled?(finder)
+ return paginate_first_page_via_gitaly(finder) if paginate_first_page?(finder)
- branches = ::Kaminari.paginate_array(finder.execute)
+ records = ::Kaminari.paginate_array(finder.execute)
Gitlab::Pagination::OffsetPagination
.new(request_context)
- .paginate(branches)
+ .paginate(records)
end
private
- def keyset_pagination_enabled?
- Feature.enabled?(:branch_list_keyset_pagination, project, default_enabled: :yaml) && params[:pagination] == 'keyset'
+ def keyset_pagination_enabled?(finder)
+ return false unless params[:pagination] == "keyset"
+
+ if finder.is_a?(BranchesFinder)
+ Feature.enabled?(:branch_list_keyset_pagination, project, default_enabled: :yaml)
+ elsif finder.is_a?(::Repositories::TreeFinder)
+ Feature.enabled?(:repository_tree_gitaly_pagination, project, default_enabled: :yaml)
+ else
+ false
+ end
end
- def paginate_first_page?
- Feature.enabled?(:branch_list_keyset_pagination, project, default_enabled: :yaml) && (params[:page].blank? || params[:page].to_i == 1)
+ def paginate_first_page?(finder)
+ return false unless params[:page].blank? || params[:page].to_i == 1
+
+ if finder.is_a?(BranchesFinder)
+ Feature.enabled?(:branch_list_keyset_pagination, project, default_enabled: :yaml)
+ elsif finder.is_a?(::Repositories::TreeFinder)
+ Feature.enabled?(:repository_tree_gitaly_pagination, project, default_enabled: :yaml)
+ else
+ false
+ end
end
def paginate_via_gitaly(finder)
@@ -43,7 +59,7 @@ module Gitlab
# Headers are added to immitate offset pagination, while it is the default option
def paginate_first_page_via_gitaly(finder)
finder.execute(gitaly_pagination: true).tap do |records|
- total = project.repository.branch_count
+ total = finder.total
per_page = params[:per_page].presence || Kaminari.config.default_per_page
Gitlab::Pagination::OffsetHeaderBuilder.new(