Add support for using RequestStore within Sidekiq tasks via SIDEKIQ_REQUEST_STORE env variable

This significantly reduces the DB churn in the PostReceive task when it
performs reference extraction.

See #18663
This commit is contained in:
Stan Hu 2016-07-01 12:51:21 -07:00
parent 68162ba900
commit f4aac77389
3 changed files with 15 additions and 0 deletions

View file

@ -4,6 +4,7 @@ v 8.11.0 (unreleased)
- Remove magic comments (`# encoding: UTF-8`) from Ruby files !5456 (winniehell)
- Fix CI status icon link underline (ClemMakesApps)
- Fix of 'Commits being passed to custom hooks are already reachable when using the UI'
- Add support for using RequestStore within Sidekiq tasks via SIDEKIQ_REQUEST_STORE env variable
- Limit git rev-list output count to one in forced push check
- Add green outline to New Branch button !5447 (winniehell)
- Retrieve rendered HTML from cache in one request

View file

@ -7,6 +7,7 @@ Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Gitlab::SidekiqMiddleware::ArgumentsLogger if ENV['SIDEKIQ_LOG_ARGUMENTS']
chain.add Gitlab::SidekiqMiddleware::MemoryKiller if ENV['SIDEKIQ_MEMORY_KILLER_MAX_RSS']
chain.add Gitlab::SidekiqMiddleware::RequestStoreMiddleware if ENV['SIDEKIQ_REQUEST_STORE']
end
# Sidekiq-cron: load recurring jobs from gitlab.yml

View file

@ -0,0 +1,13 @@
module Gitlab
module SidekiqMiddleware
class RequestStoreMiddleware
def call(worker, job, queue)
RequestStore.begin!
yield
ensure
RequestStore.end!
RequestStore.clear!
end
end
end
end