Skip to content
代码片段 群组 项目
提交 21881f79 编辑于 作者: Gregorius Marco's avatar Gregorius Marco 提交者: GitLab Bot
浏览文件

Add deferred_count field on deferring Sidekiq jobs

This adds more observability information on how many times a job has
been deferred.

Changelog: added
上级 23111a02
No related branches found
No related tags found
无相关合并请求
...@@ -87,6 +87,7 @@ def log_job_done(job, started_time, payload, job_exception = nil) ...@@ -87,6 +87,7 @@ def log_job_done(job, started_time, payload, job_exception = nil)
payload['message'] = "#{message}: #{job_status}: #{payload['duration_s']} sec" payload['message'] = "#{message}: #{job_status}: #{payload['duration_s']} sec"
payload['job_status'] = job_status payload['job_status'] = job_status
payload['job_deferred_by'] = job['deferred_by'] if job['deferred'] payload['job_deferred_by'] = job['deferred_by'] if job['deferred']
payload['deferred_count'] = job['deferred_count'] if job['deferred']
Gitlab::ExceptionLogFormatter.format!(job_exception, payload) if job_exception Gitlab::ExceptionLogFormatter.format!(job_exception, payload) if job_exception
......
...@@ -22,6 +22,8 @@ def call(worker, job, _queue) ...@@ -22,6 +22,8 @@ def call(worker, job, _queue)
# Referred in job_logger's 'log_job_done' method to compute proper 'job_status' # Referred in job_logger's 'log_job_done' method to compute proper 'job_status'
job['deferred'] = true job['deferred'] = true
job['deferred_by'] = deferred_by job['deferred_by'] = deferred_by
job['deferred_count'] ||= 0
job['deferred_count'] += 1
worker.class.perform_in(delay, *job['args']) worker.class.perform_in(delay, *job['args'])
counter.increment({ worker: worker.class.name }) counter.increment({ worker: worker.class.name })
......
...@@ -436,6 +436,7 @@ ...@@ -436,6 +436,7 @@
call_subject(job, 'test_queue') do call_subject(job, 'test_queue') do
job['deferred'] = true job['deferred'] = true
job['deferred_by'] = :feature_flag job['deferred_by'] = :feature_flag
job['deferred_count'] = 1
end end
end end
end end
......
...@@ -43,6 +43,13 @@ def self.name ...@@ -43,6 +43,13 @@ def self.name
expect(TestDeferredWorker).to receive(:perform_in).with(described_class::DELAY, *job['args']) expect(TestDeferredWorker).to receive(:perform_in).with(described_class::DELAY, *job['args'])
expect { |b| subject.call(TestDeferredWorker.new, job, queue, &b) }.not_to yield_control expect { |b| subject.call(TestDeferredWorker.new, job, queue, &b) }.not_to yield_control
end end
it 'increments the defer_count' do
(1..5).each do |count|
subject.call(TestDeferredWorker.new, job, queue)
expect(job).to include('deferred_count' => count)
end
end
end end
context 'for other workers' do context 'for other workers' do
...@@ -51,7 +58,7 @@ def self.name ...@@ -51,7 +58,7 @@ def self.name
end end
end end
it 'increments the counter' do it 'increments the metric counter' do
subject.call(TestDeferredWorker.new, job, queue) subject.call(TestDeferredWorker.new, job, queue)
counter = ::Gitlab::Metrics.registry.get(:sidekiq_jobs_deferred_total) counter = ::Gitlab::Metrics.registry.get(:sidekiq_jobs_deferred_total)
......
...@@ -69,7 +69,8 @@ ...@@ -69,7 +69,8 @@
end_payload.merge( end_payload.merge(
'message' => 'TestWorker JID-da883554ee4fe414012f5f42: deferred: 0.0 sec', 'message' => 'TestWorker JID-da883554ee4fe414012f5f42: deferred: 0.0 sec',
'job_status' => 'deferred', 'job_status' => 'deferred',
'job_deferred_by' => :feature_flag 'job_deferred_by' => :feature_flag,
'deferred_count' => 1
) )
end end
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册