summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAhmad Sherif <me@ahmadsherif.com>2017-11-30 12:53:46 +0100
committerAhmad Sherif <me@ahmadsherif.com>2017-11-30 12:53:46 +0100
commitde5aacdf078f9930e15434791b24008c290a471e (patch)
tree6294dbbbaa79530d987830033a996c71172a01c0
parentfeece7713247a063bfa71ab701f8a164e6fa71bb (diff)
downloadgitlab-ce-funny-gitaly-stuff.tar.gz
Don't judge me for thisfunny-gitaly-stuff
-rw-r--r--.gitlab-ci.yml1
-rw-r--r--config/initializers/rugged_trace.rb32
-rw-r--r--lib/gitlab/gitaly_client.rb3
-rw-r--r--spec/support/gitaly.rb3
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)