Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2019-08-20 18:25:04 +0300
committerKamil Trzciński <ayufan@ayufan.eu>2019-08-21 13:05:30 +0300
commitc2cbfc5c4afbe8385659f97769db8450284639cf (patch)
tree430ac243924b4b3fb4e389a9c763ea6bd484c2f0 /lib/gitlab/sidekiq_middleware
parent75e2302d0126c4bc8ea215ffb4e72612d44e73bb (diff)
Rework `Sidekiq::JobsThreads` into `Monitor`
This makes: - very shallow `Middleware::Monitor` to only request tracking of sidekiq jobs, - `SidekiqStatus::Monitor` to be responsible to maintain persistent connection to receive messages, - `SidekiqStatus::Monitor` to always use structured logging and instance variables
Diffstat (limited to 'lib/gitlab/sidekiq_middleware')
-rw-r--r--lib/gitlab/sidekiq_middleware/jobs_threads.rb49
-rw-r--r--lib/gitlab/sidekiq_middleware/monitor.rb13
2 files changed, 13 insertions, 49 deletions
diff --git a/lib/gitlab/sidekiq_middleware/jobs_threads.rb b/lib/gitlab/sidekiq_middleware/jobs_threads.rb
deleted file mode 100644
index d0603bcee2d..00000000000
--- a/lib/gitlab/sidekiq_middleware/jobs_threads.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module SidekiqMiddleware
- class JobsThreads
- @@jobs = {} # rubocop:disable Style/ClassVars
- MUTEX = Mutex.new
-
- def call(worker, job, queue)
- jid = job['jid']
-
- MUTEX.synchronize do
- @@jobs[jid] = Thread.current
- end
-
- return if self.class.cancelled?(jid)
-
- yield
- ensure
- MUTEX.synchronize do
- @@jobs.delete(jid)
- end
- end
-
- def self.interrupt(jid)
- MUTEX.synchronize do
- thread = @@jobs[jid]
- break unless thread
-
- thread.raise(Interrupt)
- thread
- end
- end
-
- def self.cancelled?(jid)
- Sidekiq.redis {|c| c.exists("cancelled-#{jid}") }
- end
-
- def self.mark_job_as_cancelled(jid)
- Sidekiq.redis {|c| c.setex("cancelled-#{jid}", 86400, 1) }
- "Marked job as cancelled(if Sidekiq retry within 24 hours, the job will be skipped as `processed`). Jid: #{jid}"
- end
-
- def self.jobs
- @@jobs
- end
- end
- end
-end
diff --git a/lib/gitlab/sidekiq_middleware/monitor.rb b/lib/gitlab/sidekiq_middleware/monitor.rb
new file mode 100644
index 00000000000..2d0e5a6d635
--- /dev/null
+++ b/lib/gitlab/sidekiq_middleware/monitor.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module SidekiqMiddleware
+ class Monitor
+ def call(worker, job, queue)
+ Gitlab::SidekiqMonitor.instance.within_job(job['jid'], queue) do
+ yield
+ end
+ end
+ end
+ end
+end