1
- from sentry_sdk import configure_scope
2
- from sentry_sdk .hub import Hub
1
+ import sentry_sdk
3
2
from sentry_sdk .integrations import Integration
4
- from sentry_sdk .utils import capture_internal_exceptions
3
+ from sentry_sdk .scope import Scope
4
+ from sentry_sdk .utils import capture_internal_exceptions , ensure_integration_enabled
5
5
6
6
from sentry_sdk ._types import TYPE_CHECKING
7
7
@@ -56,51 +56,47 @@ def patch_spark_context_init():
56
56
57
57
spark_context_init = SparkContext ._do_init
58
58
59
+ @ensure_integration_enabled (SparkIntegration , spark_context_init )
59
60
def _sentry_patched_spark_context_init (self , * args , ** kwargs ):
60
61
# type: (SparkContext, *Any, **Any) -> Optional[Any]
61
- init = spark_context_init (self , * args , ** kwargs )
62
-
63
- if Hub .current .get_integration (SparkIntegration ) is None :
64
- return init
65
-
66
62
_start_sentry_listener (self )
67
63
_set_app_properties ()
68
64
69
- with configure_scope () as scope :
70
-
71
- @scope .add_event_processor
72
- def process_event (event , hint ):
73
- # type: (Event, Hint) -> Optional[Event]
74
- with capture_internal_exceptions ():
75
- if Hub . current .get_integration (SparkIntegration ) is None :
76
- return event
77
-
78
- event .setdefault ("user" , {}).setdefault ("id" , self .sparkUser ())
79
-
80
- event .setdefault ("tags" , {}).setdefault (
81
- "executor.id" , self ._conf .get ("spark.executor.id" )
82
- )
83
- event ["tags" ].setdefault (
84
- "spark-submit.deployMode" ,
85
- self ._conf .get ("spark.submit.deployMode" ),
86
- )
87
- event ["tags" ].setdefault (
88
- "driver.host" , self ._conf .get ("spark.driver.host" )
89
- )
90
- event ["tags" ].setdefault (
91
- "driver.port" , self ._conf .get ("spark.driver.port" )
92
- )
93
- event ["tags" ].setdefault ("spark_version" , self .version )
94
- event ["tags" ].setdefault ("app_name" , self .appName )
95
- event ["tags" ].setdefault ("application_id" , self .applicationId )
96
- event ["tags" ].setdefault ("master" , self .master )
97
- event ["tags" ].setdefault ("spark_home" , self .sparkHome )
98
-
99
- event .setdefault ("extra" , {}).setdefault ("web_url" , self .uiWebUrl )
100
-
101
- return event
102
-
103
- return init
65
+ scope = Scope . get_isolation_scope ()
66
+
67
+ @scope .add_event_processor
68
+ def process_event (event , hint ):
69
+ # type: (Event, Hint) -> Optional[Event]
70
+ with capture_internal_exceptions ():
71
+ if sentry_sdk . get_client () .get_integration (SparkIntegration ) is None :
72
+ return event
73
+
74
+ event .setdefault ("user" , {}).setdefault ("id" , self .sparkUser ())
75
+
76
+ event .setdefault ("tags" , {}).setdefault (
77
+ "executor.id" , self ._conf .get ("spark.executor.id" )
78
+ )
79
+ event ["tags" ].setdefault (
80
+ "spark-submit.deployMode" ,
81
+ self ._conf .get ("spark.submit.deployMode" ),
82
+ )
83
+ event ["tags" ].setdefault (
84
+ "driver.host" , self ._conf .get ("spark.driver.host" )
85
+ )
86
+ event ["tags" ].setdefault (
87
+ "driver.port" , self ._conf .get ("spark.driver.port" )
88
+ )
89
+ event ["tags" ].setdefault ("spark_version" , self .version )
90
+ event ["tags" ].setdefault ("app_name" , self .appName )
91
+ event ["tags" ].setdefault ("application_id" , self .applicationId )
92
+ event ["tags" ].setdefault ("master" , self .master )
93
+ event ["tags" ].setdefault ("spark_home" , self .sparkHome )
94
+
95
+ event .setdefault ("extra" , {}).setdefault ("web_url" , self .uiWebUrl )
96
+
97
+ return event
98
+
99
+ return spark_context_init ( self , * args , ** kwargs )
104
100
105
101
SparkContext ._do_init = _sentry_patched_spark_context_init
106
102
@@ -209,14 +205,10 @@ class Java:
209
205
210
206
211
207
class SentryListener (SparkListener ):
212
- def __init__ (self ):
213
- # type: () -> None
214
- self .hub = Hub .current
215
-
216
208
def onJobStart (self , jobStart ): # noqa: N802,N803
217
209
# type: (Any) -> None
218
210
message = "Job {} Started" .format (jobStart .jobId ())
219
- self . hub .add_breadcrumb (level = "info" , message = message )
211
+ sentry_sdk .add_breadcrumb (level = "info" , message = message )
220
212
_set_app_properties ()
221
213
222
214
def onJobEnd (self , jobEnd ): # noqa: N802,N803
@@ -232,14 +224,14 @@ def onJobEnd(self, jobEnd): # noqa: N802,N803
232
224
level = "warning"
233
225
message = "Job {} Failed" .format (jobEnd .jobId ())
234
226
235
- self . hub .add_breadcrumb (level = level , message = message , data = data )
227
+ sentry_sdk .add_breadcrumb (level = level , message = message , data = data )
236
228
237
229
def onStageSubmitted (self , stageSubmitted ): # noqa: N802,N803
238
230
# type: (Any) -> None
239
231
stage_info = stageSubmitted .stageInfo ()
240
232
message = "Stage {} Submitted" .format (stage_info .stageId ())
241
233
data = {"attemptId" : stage_info .attemptId (), "name" : stage_info .name ()}
242
- self . hub .add_breadcrumb (level = "info" , message = message , data = data )
234
+ sentry_sdk .add_breadcrumb (level = "info" , message = message , data = data )
243
235
_set_app_properties ()
244
236
245
237
def onStageCompleted (self , stageCompleted ): # noqa: N802,N803
@@ -260,4 +252,4 @@ def onStageCompleted(self, stageCompleted): # noqa: N802,N803
260
252
message = "Stage {} Completed" .format (stage_info .stageId ())
261
253
level = "info"
262
254
263
- self . hub .add_breadcrumb (level = level , message = message , data = data )
255
+ sentry_sdk .add_breadcrumb (level = level , message = message , data = data )
0 commit comments