2025-12-01
This commit is contained in:
+37
-6
@@ -31,9 +31,13 @@ def _set_app_properties():
|
||||
|
||||
spark_context = SparkContext._active_spark_context
|
||||
if spark_context:
|
||||
spark_context.setLocalProperty("sentry_app_name", spark_context.appName)
|
||||
spark_context.setLocalProperty(
|
||||
"sentry_application_id", spark_context.applicationId
|
||||
"sentry_app_name",
|
||||
spark_context.appName,
|
||||
)
|
||||
spark_context.setLocalProperty(
|
||||
"sentry_application_id",
|
||||
spark_context.applicationId,
|
||||
)
|
||||
|
||||
|
||||
@@ -154,7 +158,8 @@ class SparkListener:
|
||||
pass
|
||||
|
||||
def onExecutorBlacklistedForStage( # noqa: N802
|
||||
self, executorBlacklistedForStage # noqa: N803
|
||||
self,
|
||||
executorBlacklistedForStage, # noqa: N803
|
||||
):
|
||||
# type: (Any) -> None
|
||||
pass
|
||||
@@ -231,12 +236,14 @@ class SentryListener(SparkListener):
|
||||
data=None, # type: Optional[dict[str, Any]]
|
||||
):
|
||||
# type: (...) -> None
|
||||
sentry_sdk.get_global_scope().add_breadcrumb(
|
||||
sentry_sdk.get_isolation_scope().add_breadcrumb(
|
||||
level=level, message=message, data=data
|
||||
)
|
||||
|
||||
def onJobStart(self, jobStart): # noqa: N802,N803
|
||||
# type: (Any) -> None
|
||||
sentry_sdk.get_isolation_scope().clear_breadcrumbs()
|
||||
|
||||
message = "Job {} Started".format(jobStart.jobId())
|
||||
self._add_breadcrumb(level="info", message=message)
|
||||
_set_app_properties()
|
||||
@@ -260,7 +267,12 @@ class SentryListener(SparkListener):
|
||||
# type: (Any) -> None
|
||||
stage_info = stageSubmitted.stageInfo()
|
||||
message = "Stage {} Submitted".format(stage_info.stageId())
|
||||
data = {"attemptId": stage_info.attemptId(), "name": stage_info.name()}
|
||||
|
||||
data = {"name": stage_info.name()}
|
||||
attempt_id = _get_attempt_id(stage_info)
|
||||
if attempt_id is not None:
|
||||
data["attemptId"] = attempt_id
|
||||
|
||||
self._add_breadcrumb(level="info", message=message, data=data)
|
||||
_set_app_properties()
|
||||
|
||||
@@ -271,7 +283,11 @@ class SentryListener(SparkListener):
|
||||
stage_info = stageCompleted.stageInfo()
|
||||
message = ""
|
||||
level = ""
|
||||
data = {"attemptId": stage_info.attemptId(), "name": stage_info.name()}
|
||||
|
||||
data = {"name": stage_info.name()}
|
||||
attempt_id = _get_attempt_id(stage_info)
|
||||
if attempt_id is not None:
|
||||
data["attemptId"] = attempt_id
|
||||
|
||||
# Have to Try Except because stageInfo.failureReason() is typed with Scala Option
|
||||
try:
|
||||
@@ -283,3 +299,18 @@ class SentryListener(SparkListener):
|
||||
level = "info"
|
||||
|
||||
self._add_breadcrumb(level=level, message=message, data=data)
|
||||
|
||||
|
||||
def _get_attempt_id(stage_info):
|
||||
# type: (Any) -> Optional[int]
|
||||
try:
|
||||
return stage_info.attemptId()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
return stage_info.attemptNumber()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user