diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-13 06:10:09 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-08-13 06:10:09 +0300 |
commit | ed01bf9b255ebcaafdf07e0d9a54ce6886d9fdc7 (patch) | |
tree | ff197d19fc9f99effbdd837f7a911fa8f322c557 /lib/gitlab/database.rb | |
parent | 2023b1313d8f42bff1d6563330c0a7eed9d4dd85 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/database.rb')
-rw-r--r-- | lib/gitlab/database.rb | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb index 1b25d3c2090..321890722b5 100644 --- a/lib/gitlab/database.rb +++ b/lib/gitlab/database.rb @@ -177,11 +177,6 @@ module Gitlab 'unknown' end - # Monkeypatch rails with upgraded database observability - def self.install_monkey_patches - ActiveRecord::Base.prepend(ActiveRecordBaseTransactionMetrics) - end - def self.read_only? false end @@ -190,6 +185,18 @@ module Gitlab !read_only? end + # Monkeypatch rails with upgraded database observability + def self.install_transaction_metrics_patches! + ActiveRecord::Base.prepend(ActiveRecordBaseTransactionMetrics) + end + + def self.install_transaction_context_patches! + ActiveRecord::ConnectionAdapters::TransactionManager + .prepend(TransactionManagerContext) + ActiveRecord::ConnectionAdapters::RealTransaction + .prepend(RealTransactionContext) + end + # MonkeyPatch for ActiveRecord::Base for adding observability module ActiveRecordBaseTransactionMetrics extend ActiveSupport::Concern @@ -204,6 +211,32 @@ module Gitlab end end end + + # rubocop:disable Gitlab/ModuleWithInstanceVariables + module TransactionManagerContext + def transaction_context + @stack.first.try(:gitlab_transaction_context) + end + end + + module RealTransactionContext + def gitlab_transaction_context + @gitlab_transaction_context ||= ::Gitlab::Database::Transaction::Context.new + end + + def commit + gitlab_transaction_context.commit + + super + end + + def rollback + gitlab_transaction_context.rollback + + super + end + end + # rubocop:enable Gitlab/ModuleWithInstanceVariables end end |