@@ -13,6 +13,7 @@ module ActiveJobExtensions
1313
1414 def self . prepended ( base )
1515 base . attr_accessor :_sentry
16+ base . attr_accessor :_sentry_extension_scope_contexts
1617 base . attr_reader :_sentry_job_data
1718 end
1819
@@ -156,14 +157,15 @@ def log_producer_span_error(e)
156157
157158 def record ( job , trace_headers : nil , user : nil , payload : nil , &block )
158159 original_hub = Sentry . get_current_hub_internal
160+ original_extension_scope_contexts = job . _sentry_extension_scope_contexts
159161 Sentry . clone_hub_to_current_thread
160162
161163 Sentry . with_scope do |scope |
162164 begin
163165 extension = Sentry . job_extensions . for ( job )
164166 scope . set_user ( user . transform_keys ( &:to_sym ) ) if user && !user . empty?
165167
166- apply_extension_scope_data ( scope , extension , job )
168+ job . _sentry_extension_scope_contexts = apply_extension_scope_data ( scope , extension , job )
167169
168170 scope . set_transaction_name ( Sentry . job_extensions . call ( extension , :transaction_name , job ) || job . class . name , source : :task )
169171 scope . set_tags ( queue : job . queue_name )
@@ -216,6 +218,7 @@ def record(job, trace_headers: nil, user: nil, payload: nil, &block)
216218 end
217219 end
218220 ensure
221+ job . _sentry_extension_scope_contexts = original_extension_scope_contexts
219222 Sentry . set_current_hub_internal ( original_hub )
220223 end
221224
@@ -238,6 +241,7 @@ def apply_extension_scope_data(scope, extension, job)
238241 scope . set_tags ( data [ :tags ] ) if data [ :tags ]
239242 scope . set_extras ( data [ :extra ] ) if data [ :extra ]
240243 scope . set_user ( data [ :user ] ) if data [ :user ]
244+ data . fetch ( :contexts , { } ) . deep_dup
241245 end
242246
243247 def set_extension_messaging_data ( span , extension , job )
@@ -291,7 +295,7 @@ def compute_latency(job)
291295 def capture_exception ( job , e , extension = Sentry . job_extensions . for ( job ) )
292296 error_data = additive_error_data (
293297 Sentry . job_extensions . call ( extension , :error_data , job , e ) ,
294- Sentry . job_extensions . call ( extension , :scope_data , job ) . fetch ( :contexts , { } )
298+ job . _sentry_extension_scope_contexts || { }
295299 )
296300
297301 options = {
0 commit comments