a74396dcc5
This will help identify Sidekiq jobs that invoke excessive number of filesystem access. The timing data is stored in `RequestStore`, but this is only active within the middleware and is not directly accessible to the Sidekiq logger. However, it is possible for the middleware to modify the job hash to pass this data along to the logger.
42 lines
1.3 KiB
Ruby
Executable file
42 lines
1.3 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
|
|
ALLOWED = [
|
|
# https://gitlab.com/gitlab-org/gitaly/issues/760
|
|
'lib/elasticsearch/git/repository.rb',
|
|
|
|
# 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/instrumentation_helper.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)
|