lib/gdk/diagnostic/gitaly.rb (35 lines of code) (raw):
# frozen_string_literal: true
module GDK
module Diagnostic
class Gitaly < Base
TITLE = 'Gitaly'
MAX_GITALY_INTERNAL_SOCKET_PATH_LENGTH = 100
def success?
dir_length_ok?
end
def detail
return if success?
output = []
output << dir_length_too_long_message unless dir_length_ok?
output.join("\n#{diagnostic_detail_break}\n")
end
private
def dir_length_ok?
internal_socket_path_length <= MAX_GITALY_INTERNAL_SOCKET_PATH_LENGTH
end
def dir_length_too_long_message
<<~DIR_LENGTH_TOO_LONG_MESSAGE
Gitaly will attempt to create Unix sockets in:
#{internal_socket_path}
Unix socket creation issues have been observed when the character length of the
directory above exceeds #{MAX_GITALY_INTERNAL_SOCKET_PATH_LENGTH} characters,
and yours is #{internal_socket_path_length}.
If you're experiencing issues, please try and reduce the directory depth to be
under #{MAX_GITALY_INTERNAL_SOCKET_PATH_LENGTH} characters. This can be done by
either moving the GDK directory, or by configuring the Gitaly runtime directory
path in your `gdk.yml`.
DIR_LENGTH_TOO_LONG_MESSAGE
end
def runtime_dir
@runtime_dir ||= config.gitaly.runtime_dir
end
def internal_socket_path
File.join(runtime_dir, 'gitaly-XXXXX', 'sock.d', 'XXXXXXX')
end
def internal_socket_path_length
@internal_socket_path_length ||= internal_socket_path.length
end
end
end
end