diff options
author | Ahmad Sherif <me@ahmadsherif.com> | 2017-11-30 12:53:46 +0100 |
---|---|---|
committer | Ahmad Sherif <me@ahmadsherif.com> | 2017-11-30 12:53:46 +0100 |
commit | de5aacdf078f9930e15434791b24008c290a471e (patch) | |
tree | 6294dbbbaa79530d987830033a996c71172a01c0 | |
parent | feece7713247a063bfa71ab701f8a164e6fa71bb (diff) | |
download | gitlab-ce-funny-gitaly-stuff.tar.gz |
Don't judge me for thisfunny-gitaly-stuff
-rw-r--r-- | .gitlab-ci.yml | 1 | ||||
-rw-r--r-- | config/initializers/rugged_trace.rb | 32 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client.rb | 3 | ||||
-rw-r--r-- | spec/support/gitaly.rb | 3 |
4 files changed, 38 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 60a2b5d5b5b..1fe86b02451 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -105,6 +105,7 @@ stages: - knapsack/ - rspec_flaky/ - tmp/capybara/ + - tmp/non-gitaly-calls.txt .rspec-metadata-pg: &rspec-metadata-pg <<: *rspec-metadata diff --git a/config/initializers/rugged_trace.rb b/config/initializers/rugged_trace.rb new file mode 100644 index 00000000000..9ae791bc6bd --- /dev/null +++ b/config/initializers/rugged_trace.rb @@ -0,0 +1,32 @@ +$reportt = File.open('tmp/non-gitaly-calls.txt', 'a') +$reportt.sync = true + +Dir["#{Rails.root}/lib/gitlab/git/**/*.rb"].each { |f| require f } + +(Gitlab::Git.constants - [:Hook]).each do |name| + const = Gitlab::Git.const_get(name) + + next unless const.is_a?(Module) + + const.instance_methods(false).each do |meth| + const.class_eval <<-STR + prepend Module.new { + def #{meth}(*) + ret = nil + + TracePoint.new(:call, :c_call) do |tp| + next unless tp.defined_class.name + if tp.defined_class.name.start_with?('Rugged') + $reportt.write [tp.path, tp.lineno].to_s + $reportt.write "\n" + end + end.enable do + ret = super + end + + ret + end + } + STR + end +end diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb index f27cd800bdd..e5ee223a8a7 100644 --- a/lib/gitlab/gitaly_client.rb +++ b/lib/gitlab/gitaly_client.rb @@ -179,6 +179,7 @@ module Gitlab # Evaluates whether a feature toggle is on or off def self.feature_enabled?(feature_name, status: MigrationStatus::OPT_IN) + return true # Disabled features are always off! return false if status == MigrationStatus::DISABLED @@ -263,7 +264,7 @@ module Gitlab return if permitted_call_count <= MAXIMUM_GITALY_CALLS - raise TooManyInvocationsError.new(call_site, actual_call_count, max_call_count, max_stacks) + # raise TooManyInvocationsError.new(call_site, actual_call_count, max_call_count, max_stacks) end def self.allow_n_plus_1_calls diff --git a/spec/support/gitaly.rb b/spec/support/gitaly.rb index c7e8a39a617..724a9dde3c7 100644 --- a/spec/support/gitaly.rb +++ b/spec/support/gitaly.rb @@ -1,4 +1,7 @@ RSpec.configure do |config| + config.filter_run_excluding :disable_gitaly => true + config.filter_run_excluding :skip_gitaly_mock => true + config.before(:each) do |example| if example.metadata[:disable_gitaly] allow(Gitlab::GitalyClient).to receive(:feature_enabled?).and_return(false) |