mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 12:55:56 +01:00
Add support for Active Record query log tags (#33342)
This commit is contained in:
parent
db749c7d2b
commit
3f8f06eb46
2 changed files with 19 additions and 2 deletions
|
@ -108,6 +108,11 @@ module Mastodon
|
||||||
config.x.mastodon = config_for(:mastodon)
|
config.x.mastodon = config_for(:mastodon)
|
||||||
config.x.translation = config_for(:translation)
|
config.x.translation = config_for(:translation)
|
||||||
|
|
||||||
|
if ENV.fetch('QUERY_LOG_TAGS_ENABLED', 'false') == 'true'
|
||||||
|
config.active_record.query_log_tags_enabled = ENV.fetch('QUERY_LOG_TAGS_ENABLED', 'false') == 'true'
|
||||||
|
config.active_record.query_log_tags = [:namespaced_controller, :action, :sidekiq_job_class]
|
||||||
|
end
|
||||||
|
|
||||||
config.to_prepare do
|
config.to_prepare do
|
||||||
Doorkeeper::AuthorizationsController.layout 'modal'
|
Doorkeeper::AuthorizationsController.layout 'modal'
|
||||||
Doorkeeper::AuthorizedApplicationsController.layout 'admin'
|
Doorkeeper::AuthorizedApplicationsController.layout 'admin'
|
||||||
|
|
|
@ -3,8 +3,10 @@
|
||||||
class Mastodon::SidekiqMiddleware
|
class Mastodon::SidekiqMiddleware
|
||||||
BACKTRACE_LIMIT = 3
|
BACKTRACE_LIMIT = 3
|
||||||
|
|
||||||
def call(*, &block)
|
def call(_worker_class, job, _queue, &block)
|
||||||
|
setup_query_log_tags(job) do
|
||||||
Chewy.strategy(:mastodon, &block)
|
Chewy.strategy(:mastodon, &block)
|
||||||
|
end
|
||||||
rescue Mastodon::HostValidationError
|
rescue Mastodon::HostValidationError
|
||||||
# Do not retry
|
# Do not retry
|
||||||
rescue => e
|
rescue => e
|
||||||
|
@ -61,4 +63,14 @@ class Mastodon::SidekiqMiddleware
|
||||||
Thread.current[:statsd_socket]&.close
|
Thread.current[:statsd_socket]&.close
|
||||||
Thread.current[:statsd_socket] = nil
|
Thread.current[:statsd_socket] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def setup_query_log_tags(job, &block)
|
||||||
|
if Rails.configuration.active_record.query_log_tags_enabled
|
||||||
|
# If `wrapped` is set, this is an `ActiveJob` which is already in the execution context
|
||||||
|
sidekiq_job_class = job['wrapped'].present? ? nil : job['class'].to_s
|
||||||
|
ActiveSupport::ExecutionContext.set(sidekiq_job_class: sidekiq_job_class, &block)
|
||||||
|
else
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue