Loading lib/labkit/middleware/sidekiq.rb +2 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ module Labkit module Sidekiq autoload :Client, "labkit/middleware/sidekiq/client" autoload :Server, "labkit/middleware/sidekiq/server" autoload :Context, "labkit/middleware/sidekiq/context" autoload :Tracing, "labkit/middleware/sidekiq/tracing" end end end lib/labkit/middleware/sidekiq/client.rb +13 −6 Original line number Diff line number Diff line Loading @@ -3,14 +3,21 @@ module Labkit module Middleware module Sidekiq # This middleware for Sidekiq-client wraps scheduling jobs in a context # The context will also be added to the sidekiq job in redis so it can # be reinstantiated by Sidekiq-server when running the job. # This is a wrapper around all the sidekiq client-middleware in labkit # The only middleware that needs to be added to the chain in GitLab-rails # # It uses a new `Sidekiq::Middleware::Chain` to string multiple middlewares # together. class Client def call(_worker_class, job, _queue, _redis_pool) Labkit::Context.with_context do |context| job.merge!(context.to_h) def self.chain @chain ||= ::Sidekiq::Middleware::Chain.new do |chain| chain.add Labkit::Middleware::Sidekiq::Context::Client chain.add Labkit::Middleware::Sidekiq::Tracing::Client if Labkit::Tracing.enabled? end end def call(*args) self.class.chain.invoke(*args) do yield end end Loading lib/labkit/middleware/sidekiq/context.rb 0 → 100644 +14 −0 Original line number Diff line number Diff line # frozen_string_literal: true module Labkit module Middleware module Sidekiq # This module contains all the sidekiq middleware regarding application # context module Context autoload :Client, "labkit/middleware/sidekiq/context/client" autoload :Server, "labkit/middleware/sidekiq/context/server" end end end end lib/labkit/middleware/sidekiq/context/client.rb 0 → 100644 +22 −0 Original line number Diff line number Diff line # frozen_string_literal: true module Labkit module Middleware module Sidekiq module Context # This middleware for Sidekiq-client wraps scheduling jobs in a context # The context will also be added to the sidekiq job in redis so it can # be reinstantiated by Sidekiq-server when running the job. class Client def call(_worker_class, job, _queue, _redis_pool) Labkit::Context.with_context do |context| job.merge!(context.to_h) yield end end end end end end end lib/labkit/middleware/sidekiq/context/server.rb 0 → 100644 +21 −0 Original line number Diff line number Diff line # frozen_string_literal: true module Labkit module Middleware module Sidekiq module Context # This middleware for Sidekiq-client uses the values stored on a job to # reinstantiate a context in which the job will run. class Server def call(_worker_class, job, _queue) data = job.merge(Labkit::Context.log_key(:caller_id) => job["class"]) Labkit::Context.with_context(data) do |_context| yield end end end end end end end Loading
lib/labkit/middleware/sidekiq.rb +2 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ module Labkit module Sidekiq autoload :Client, "labkit/middleware/sidekiq/client" autoload :Server, "labkit/middleware/sidekiq/server" autoload :Context, "labkit/middleware/sidekiq/context" autoload :Tracing, "labkit/middleware/sidekiq/tracing" end end end
lib/labkit/middleware/sidekiq/client.rb +13 −6 Original line number Diff line number Diff line Loading @@ -3,14 +3,21 @@ module Labkit module Middleware module Sidekiq # This middleware for Sidekiq-client wraps scheduling jobs in a context # The context will also be added to the sidekiq job in redis so it can # be reinstantiated by Sidekiq-server when running the job. # This is a wrapper around all the sidekiq client-middleware in labkit # The only middleware that needs to be added to the chain in GitLab-rails # # It uses a new `Sidekiq::Middleware::Chain` to string multiple middlewares # together. class Client def call(_worker_class, job, _queue, _redis_pool) Labkit::Context.with_context do |context| job.merge!(context.to_h) def self.chain @chain ||= ::Sidekiq::Middleware::Chain.new do |chain| chain.add Labkit::Middleware::Sidekiq::Context::Client chain.add Labkit::Middleware::Sidekiq::Tracing::Client if Labkit::Tracing.enabled? end end def call(*args) self.class.chain.invoke(*args) do yield end end Loading
lib/labkit/middleware/sidekiq/context.rb 0 → 100644 +14 −0 Original line number Diff line number Diff line # frozen_string_literal: true module Labkit module Middleware module Sidekiq # This module contains all the sidekiq middleware regarding application # context module Context autoload :Client, "labkit/middleware/sidekiq/context/client" autoload :Server, "labkit/middleware/sidekiq/context/server" end end end end
lib/labkit/middleware/sidekiq/context/client.rb 0 → 100644 +22 −0 Original line number Diff line number Diff line # frozen_string_literal: true module Labkit module Middleware module Sidekiq module Context # This middleware for Sidekiq-client wraps scheduling jobs in a context # The context will also be added to the sidekiq job in redis so it can # be reinstantiated by Sidekiq-server when running the job. class Client def call(_worker_class, job, _queue, _redis_pool) Labkit::Context.with_context do |context| job.merge!(context.to_h) yield end end end end end end end
lib/labkit/middleware/sidekiq/context/server.rb 0 → 100644 +21 −0 Original line number Diff line number Diff line # frozen_string_literal: true module Labkit module Middleware module Sidekiq module Context # This middleware for Sidekiq-client uses the values stored on a job to # reinstantiate a context in which the job will run. class Server def call(_worker_class, job, _queue) data = job.merge(Labkit::Context.log_key(:caller_id) => job["class"]) Labkit::Context.with_context(data) do |_context| yield end end end end end end end