summaryrefslogtreecommitdiff
path: root/lib/gitlab/sidekiq_middleware
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-24 12:09:01 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-24 12:09:01 +0000
commit2c2dd5e36c4ed5f09f488be288882d98f9124d12 (patch)
treead4c478bb1c588387a881b26a7db7c3237b9d4f3 /lib/gitlab/sidekiq_middleware
parent2ff184ad761fbfbe25a3d827c8f704349963a8d2 (diff)
downloadgitlab-ce-2c2dd5e36c4ed5f09f488be288882d98f9124d12.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/sidekiq_middleware')
-rw-r--r--lib/gitlab/sidekiq_middleware/worker_context/server.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/gitlab/sidekiq_middleware/worker_context/server.rb b/lib/gitlab/sidekiq_middleware/worker_context/server.rb
new file mode 100644
index 00000000000..29d98ad16a9
--- /dev/null
+++ b/lib/gitlab/sidekiq_middleware/worker_context/server.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module SidekiqMiddleware
+ module WorkerContext
+ class Server
+ def call(worker, job, _queue, &block)
+ worker_class = worker.class
+
+ # This is not a worker we know about, perhaps from a gem
+ return yield unless worker_class.respond_to?(:get_worker_context)
+
+ # Use the context defined on the class level as a base context
+ wrap_in_optional_context(worker_class.get_worker_context, &block)
+ end
+
+ private
+
+ def wrap_in_optional_context(context, &block)
+ return yield unless context
+
+ context.use(&block)
+ end
+ end
+ end
+ end
+end