Skip to content

Commit 66d6ce7

Browse files
committed
fix(sidekiq): avoid encoding unused producer body size
1 parent 4d30fcb commit 66d6ce7

3 files changed

Lines changed: 24 additions & 3 deletions

File tree

‎sentry-sidekiq/lib/sentry/sidekiq/job_extension.rb‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,14 @@ def messaging_data(job)
3535
system: name,
3636
message_id: job["jid"],
3737
destination: job["queue"],
38-
receive_latency: receive_latency(job),
39-
body_size: body_size(job)
38+
receive_latency: receive_latency(job)
4039
}.compact
4140
end
4241

42+
def consumer_messaging_data(job)
43+
messaging_data(job).merge(body_size: body_size(job)).compact
44+
end
45+
4346
def retry_info(job)
4447
{ count: @retry_policy.retry_count(job) || 0, will_retry: @retry_policy.will_retry?(job) }
4548
end

‎sentry-sidekiq/lib/sentry/sidekiq/sentry_context_middleware.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def call(worker, job, queue)
2424
scope, sidekiq_job,
2525
payload: sidekiq_job,
2626
trace_headers: job_extension.extract_trace_headers(sidekiq_job),
27-
messaging_data: -> { job_extension.messaging_data(sidekiq_job) },
27+
messaging_data: -> { job_extension.consumer_messaging_data(sidekiq_job) },
2828
default_retry_count: job_extension.retry_info(sidekiq_job)[:count],
2929
always_continue_trace: true
3030
)

‎sentry-sidekiq/spec/sentry/sidekiq/sentry_context_middleware_spec.rb‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,24 @@ def ensure_queue_empty(queue, timeout: 0.1)
328328
expect(span[:data]['messaging.destination.name']).to eq('default')
329329
end
330330

331+
it "serializes a sampled enqueue only when writing the job to Redis" do
332+
serializations = 0
333+
serializer = TracePoint.new(:call) do |call|
334+
serializations += 1 if call.self.equal?(Sidekiq) && call.method_id == :dump_json
335+
end
336+
337+
jid = serializer.enable do
338+
client.push('queue' => 'default', 'class' => HappyWorker, 'args' => ["hello"])
339+
end
340+
transaction.finish
341+
342+
expect(queue.first.jid).to eq(jid)
343+
expect(queue.first.args).to eq(["hello"])
344+
expect(serializations).to eq(1)
345+
span = transport.events.last.spans.find { |entry| entry[:op] == "queue.publish" }
346+
expect(span[:data]['messaging.message.id']).to eq(jid)
347+
end
348+
331349
it "only reports a producer body size that matches the finalized queued message" do
332350
client.push('queue' => 'default', 'class' => HappyWorker, 'args' => ["héllo"])
333351

0 commit comments

Comments
 (0)