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>2022-08-19 06:12:19 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-08-19 06:12:19 +0300
commitb0c61201a70f1980dc5a2454d979b95415455d14 (patch)
treef2feba66723dd0041676ad0c2ffb61e45eaf545d /lib
parent65530963a354e3e74971b775c16066bd9d76c63c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/gitaly_client/server_service.rb13
-rw-r--r--lib/gitlab/health_checks/gitaly_check.rb26
2 files changed, 35 insertions, 4 deletions
diff --git a/lib/gitlab/gitaly_client/server_service.rb b/lib/gitlab/gitaly_client/server_service.rb
index 36bda67c26e..48fd0e66354 100644
--- a/lib/gitlab/gitaly_client/server_service.rb
+++ b/lib/gitlab/gitaly_client/server_service.rb
@@ -26,6 +26,19 @@ module Gitlab
storage_specific(disk_statistics)
end
+ def readiness_check
+ request = Gitaly::ReadinessCheckRequest.new(timeout: GitalyClient.medium_timeout)
+ response = GitalyClient.call(@storage, :server_service, :readiness_check, request, timeout: GitalyClient.default_timeout)
+
+ return { success: true } if response.ok_response
+
+ failed_checks = response.failure_response.failed_checks.map do |failed_check|
+ ["#{failed_check.name}: #{failed_check.error_message}"]
+ end
+
+ { success: false, message: failed_checks.join("\n") }
+ end
+
private
def storage_specific(response)
diff --git a/lib/gitlab/health_checks/gitaly_check.rb b/lib/gitlab/health_checks/gitaly_check.rb
index f5f142c251f..2bd8ea711b5 100644
--- a/lib/gitlab/health_checks/gitaly_check.rb
+++ b/lib/gitlab/health_checks/gitaly_check.rb
@@ -27,17 +27,35 @@ module Gitlab
end
def check(storage_name)
- serv = Gitlab::GitalyClient::HealthCheckService.new(storage_name)
- result = serv.check
+ storage_healthy = healthy(storage_name)
+ unless storage_healthy[:success]
+ return HealthChecks::Result.new(
+ name,
+ storage_healthy[:success],
+ storage_healthy[:message],
+ shard: storage_name
+ )
+ end
+ storage_ready = ready(storage_name)
HealthChecks::Result.new(
name,
- result[:success],
- result[:message],
+ storage_ready[:success],
+ storage_ready[:message],
shard: storage_name
)
end
+ def healthy(storage_name)
+ serv = Gitlab::GitalyClient::HealthCheckService.new(storage_name)
+ serv.check
+ end
+
+ def ready(storage_name)
+ serv = Gitlab::GitalyClient::ServerService.new(storage_name)
+ serv.readiness_check
+ end
+
private
def metric_prefix