291df05e43
This will help diagnose the source of excessive I/O from Rugged calls. To implement this, we need to obtain the full list of arguments sent to each request method.
38 lines
1.2 KiB
Ruby
Executable file
38 lines
1.2 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
|
|
ALLOWED = [
|
|
# Needed to handle repositories that are not in any storage
|
|
'lib/gitlab/bare_repository_import/repository.rb',
|
|
|
|
# Needed to avoid using the git binary to validate a branch name
|
|
'lib/gitlab/git_ref_validator.rb',
|
|
|
|
# Reverted Rugged calls due to Gitaly atop NFS performance
|
|
# See https://docs.gitlab.com/ee/development/gitaly.html#legacy-rugged-code.
|
|
'lib/gitlab/git/rugged_impl/',
|
|
'lib/gitlab/gitaly_client/storage_settings.rb',
|
|
|
|
# Needed for logging
|
|
'config/initializers/peek.rb',
|
|
'config/initializers/lograge.rb',
|
|
'lib/gitlab/grape_logging/loggers/perf_logger.rb',
|
|
'lib/gitlab/rugged_instrumentation.rb',
|
|
'lib/peek/views/rugged.rb'
|
|
].freeze
|
|
|
|
rugged_lines = IO.popen(%w[git grep -i -n rugged -- app config lib], &:read).lines
|
|
rugged_lines = rugged_lines.select { |l| /^[^:]*\.rb:/ =~ l }
|
|
rugged_lines = rugged_lines.reject { |l| l.start_with?(*ALLOWED) }
|
|
rugged_lines = rugged_lines.reject { |l| /(include|prepend) Gitlab::Git::RuggedImpl/ =~ l}
|
|
rugged_lines = rugged_lines.reject do |line|
|
|
code, _comment = line.split('# ', 2)
|
|
code !~ /rugged/i
|
|
end
|
|
|
|
exit if rugged_lines.empty?
|
|
|
|
puts "Using Rugged is only allowed in test and #{ALLOWED}\n\n"
|
|
|
|
puts rugged_lines
|
|
|
|
exit(false)
|