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
path: root/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-12-01 15:16:08 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-12-01 15:16:08 +0300
commitc9439a09c51acff525f2e5c5cba8caecc270da8b (patch)
treecd344f3ce05525dccbc5f7d607d3fd1e76b46cd2 /lib
parent7bc1ee0bcb9cefaf788aa0b93383b7347e9010b0 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/api/entities/project_import_failed_relation.rb1
-rw-r--r--lib/api/entities/project_import_status.rb1
-rw-r--r--lib/api/project_import.rb2
-rw-r--r--lib/gitlab/sidekiq_status.rb22
-rw-r--r--lib/gitlab/sidekiq_status/client_middleware.rb3
5 files changed, 21 insertions, 8 deletions
diff --git a/lib/api/entities/project_import_failed_relation.rb b/lib/api/entities/project_import_failed_relation.rb
index b8f842c1646..26cfae7260c 100644
--- a/lib/api/entities/project_import_failed_relation.rb
+++ b/lib/api/entities/project_import_failed_relation.rb
@@ -10,6 +10,7 @@ module API
end
expose :relation_key, as: :relation_name
+ expose :relation_index, as: :line_number
end
end
end
diff --git a/lib/api/entities/project_import_status.rb b/lib/api/entities/project_import_status.rb
index e79c1cdf1a2..b6bcac16ff3 100644
--- a/lib/api/entities/project_import_status.rb
+++ b/lib/api/entities/project_import_status.rb
@@ -4,6 +4,7 @@ module API
module Entities
class ProjectImportStatus < ProjectIdentity
expose :import_status
+ expose :import_type
expose :correlation_id do |project, _options|
project.import_state&.correlation_id
end
diff --git a/lib/api/project_import.rb b/lib/api/project_import.rb
index e7c532e2483..56b4f4c6598 100644
--- a/lib/api/project_import.rb
+++ b/lib/api/project_import.rb
@@ -107,7 +107,7 @@ module API
params do
requires :id, type: String, desc: 'The ID of a project'
end
- desc 'Get a project export status' do
+ desc 'Get a project import status' do
detail 'This feature was introduced in GitLab 10.6.'
success Entities::ProjectImportStatus
end
diff --git a/lib/gitlab/sidekiq_status.rb b/lib/gitlab/sidekiq_status.rb
index fbf2718d718..120d18f63f2 100644
--- a/lib/gitlab/sidekiq_status.rb
+++ b/lib/gitlab/sidekiq_status.rb
@@ -29,13 +29,16 @@ module Gitlab
# for most jobs.
DEFAULT_EXPIRATION = 30.minutes.to_i
+ DEFAULT_VALUE = 1
+ DEFAULT_VALUE_MESSAGE = 'Keys using the default value for SidekiqStatus detected'
+
# Starts tracking of the given job.
#
# jid - The Sidekiq job ID
# expire - The expiration time of the Redis key.
- def self.set(jid, expire = DEFAULT_EXPIRATION)
+ def self.set(jid, expire = DEFAULT_EXPIRATION, value: DEFAULT_VALUE)
Sidekiq.redis do |redis|
- redis.set(key_for(jid), 1, ex: expire)
+ redis.set(key_for(jid), value, ex: expire)
end
end
@@ -88,13 +91,20 @@ module Gitlab
# true = job is still running or enqueued
# false = job completed
def self.job_status(job_ids)
+ return [] if job_ids.empty?
+
keys = job_ids.map { |jid| key_for(jid) }
+ results = Sidekiq.redis { |redis| redis.mget(*keys) }
- Sidekiq.redis do |redis|
- redis.pipelined do
- keys.each { |key| redis.exists(key) }
- end
+ if Feature.enabled?(:log_implicit_sidekiq_status_calls, default_enabled: :yaml)
+ to_log = keys.zip(results).select do |_key, result|
+ result == DEFAULT_VALUE.to_s
+ end.map(&:first)
+
+ Sidekiq.logger.info(message: DEFAULT_VALUE_MESSAGE, keys: to_log) if to_log.any?
end
+
+ results.map { |result| !result.nil? }
end
# Returns the JIDs that are completed
diff --git a/lib/gitlab/sidekiq_status/client_middleware.rb b/lib/gitlab/sidekiq_status/client_middleware.rb
index bfd5038557d..cee7270f2fb 100644
--- a/lib/gitlab/sidekiq_status/client_middleware.rb
+++ b/lib/gitlab/sidekiq_status/client_middleware.rb
@@ -5,8 +5,9 @@ module Gitlab
class ClientMiddleware
def call(_, job, _, _)
status_expiration = job['status_expiration'] || Gitlab::SidekiqStatus::DEFAULT_EXPIRATION
+ value = job['status_expiration'] ? 2 : Gitlab::SidekiqStatus::DEFAULT_VALUE
- Gitlab::SidekiqStatus.set(job['jid'], status_expiration)
+ Gitlab::SidekiqStatus.set(job['jid'], status_expiration, value: value)
yield
end
end