@@ -24,7 +24,7 @@ def transaction_name(job)
2424 registry . call ( registry . for ( job ) , :transaction_name , job : job )
2525 end
2626
27- def start_transaction ( scope , job , trace_headers : nil , payload : nil , always_continue_trace : false , messaging_data : { } , default_retry_count : nil )
27+ def start_transaction ( scope , job , transaction : nil , trace_headers : nil , payload : nil , always_continue_trace : false , messaging_data : { } , default_retry_count : nil )
2828 extension = registry . for ( job )
2929 options = {
3030 name : scope . transaction_name ,
@@ -42,11 +42,16 @@ def start_transaction(scope, job, trace_headers: nil, payload: nil, always_conti
4242 end
4343 end
4444
45- transaction = if always_continue_trace || ( trace_headers && ! trace_headers . empty? )
46- continued = Sentry . continue_trace ( trace_headers , ** options )
47- Sentry . start_transaction ( transaction : continued , ** options )
45+ if transaction
46+ transaction . set_name ( options [ :name ] , source : options [ :source ] )
47+ transaction . set_origin ( options [ :origin ] )
4848 else
49- Sentry . start_transaction ( **options )
49+ transaction = if always_continue_trace || ( trace_headers && !trace_headers . empty? )
50+ continued = Sentry . continue_trace ( trace_headers , **options )
51+ Sentry . start_transaction ( transaction : continued , **options )
52+ else
53+ Sentry . start_transaction ( **options )
54+ end
5055 end
5156 return unless transaction
5257
@@ -61,7 +66,7 @@ def start_transaction(scope, job, trace_headers: nil, payload: nil, always_conti
6166 end
6267
6368 def finish_transaction ( transaction , status )
64- return unless transaction
69+ return if ! transaction || transaction . timestamp
6570
6671 transaction . set_http_status ( status )
6772 transaction . finish
0 commit comments