Skip to content

Commit f7cf846

Browse files
committed
[#1444] Pass parent trace to sidekiq job
1 parent 0277354 commit f7cf846

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

lib/elastic_apm/spies/sidekiq.rb

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,15 @@ class SidekiqSpy
3030
class Middleware
3131
def call(_worker, job, queue)
3232
name = SidekiqSpy.name_for(job)
33-
transaction = ElasticAPM.start_transaction(name, 'Sidekiq')
33+
34+
transaction = if job['trace_id']
35+
ElasticAPM.start_transaction(name, 'Sidekiq', trace_context: ElasticAPM::TraceContext.new(
36+
traceparent: ElasticAPM::TraceContext::Traceparent.new(trace_id: job['trace_id'])
37+
))
38+
else
39+
ElasticAPM.start_transaction(name, 'Sidekiq')
40+
end
41+
3442
ElasticAPM.set_label(:queue, queue)
3543

3644
yield
@@ -47,6 +55,14 @@ def call(_worker, job, queue)
4755
end
4856
end
4957

58+
class ParentTraceMiddleware
59+
def call(job_class_or_string, job, queue, redis_pool)
60+
job.merge!(
61+
'trace_id' => ElasticAPM.current_transaction&.trace_id
62+
)
63+
end
64+
end
65+
5066
def self.name_for(job)
5167
klass = job['class']
5268

@@ -64,6 +80,12 @@ def install_middleware
6480
chain.add Middleware
6581
end
6682
end
83+
84+
Sidekiq.configure_client do |config|
85+
config.client_middleware do |chain|
86+
chain.add ParentTraceMiddleware
87+
end
88+
end
6789
end
6890

6991
# @api private

0 commit comments

Comments
 (0)