Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/migrations')
-rw-r--r--lib/gitlab/database/migrations/instrumentation.rb7
-rw-r--r--lib/gitlab/database/migrations/observers.rb3
-rw-r--r--lib/gitlab/database/migrations/observers/query_log.rb27
3 files changed, 34 insertions, 3 deletions
diff --git a/lib/gitlab/database/migrations/instrumentation.rb b/lib/gitlab/database/migrations/instrumentation.rb
index 959028ce00b..e9ef80d5198 100644
--- a/lib/gitlab/database/migrations/instrumentation.rb
+++ b/lib/gitlab/database/migrations/instrumentation.rb
@@ -4,6 +4,9 @@ module Gitlab
module Database
module Migrations
class Instrumentation
+ RESULT_DIR = Rails.root.join('tmp', 'migration-testing').freeze
+ STATS_FILENAME = 'migration-stats.json'
+
attr_reader :observations
def initialize(observers = ::Gitlab::Database::Migrations::Observers.all_observers)
@@ -21,7 +24,7 @@ module Gitlab
observation.walltime = Benchmark.realtime do
yield
- rescue => e
+ rescue StandardError => e
exception = e
observation.success = false
end
@@ -47,7 +50,7 @@ module Gitlab
def on_each_observer(&block)
observers.each do |observer|
yield observer
- rescue => e
+ rescue StandardError => e
Gitlab::AppLogger.error("Migration observer #{observer.class} failed with: #{e}")
end
end
diff --git a/lib/gitlab/database/migrations/observers.rb b/lib/gitlab/database/migrations/observers.rb
index 592993aeac5..b65a303ef30 100644
--- a/lib/gitlab/database/migrations/observers.rb
+++ b/lib/gitlab/database/migrations/observers.rb
@@ -7,7 +7,8 @@ module Gitlab
def self.all_observers
[
TotalDatabaseSizeChange.new,
- QueryStatistics.new
+ QueryStatistics.new,
+ QueryLog.new
]
end
end
diff --git a/lib/gitlab/database/migrations/observers/query_log.rb b/lib/gitlab/database/migrations/observers/query_log.rb
new file mode 100644
index 00000000000..45df07fe391
--- /dev/null
+++ b/lib/gitlab/database/migrations/observers/query_log.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Database
+ module Migrations
+ module Observers
+ class QueryLog < MigrationObserver
+ def before
+ @logger_was = ActiveRecord::Base.logger
+ @log_file_path = File.join(Instrumentation::RESULT_DIR, 'current.log')
+ @logger = Logger.new(@log_file_path)
+ ActiveRecord::Base.logger = @logger
+ end
+
+ def after
+ ActiveRecord::Base.logger = @logger_was
+ @logger.close
+ end
+
+ def record(observation)
+ File.rename(@log_file_path, File.join(Instrumentation::RESULT_DIR, "#{observation.migration}.log"))
+ end
+ end
+ end
+ end
+ end
+end