Skip to content

Commit 7e0e2e2

Browse files
committed
.
1 parent 72c7712 commit 7e0e2e2

File tree

2 files changed

+62
-72
lines changed

2 files changed

+62
-72
lines changed

sentry_sdk/integrations/spark/spark_driver.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,16 +296,14 @@ def onStageCompleted(self, stageCompleted): # noqa: N802,N803
296296

297297
def _get_attempt_id(stage_info):
298298
# type: (Any) -> Optional[int]
299-
from py4j.protocol import Py4JJavaError
300-
301299
try:
302300
return stage_info.attemptId()
303-
except Py4JJavaError:
301+
except Exception:
304302
pass
305303

306304
try:
307305
return stage_info.attemptNumber()
308-
except Py4JJavaError:
306+
except Exception:
309307
pass
310308

311309
return None

tests/integrations/spark/test_spark.py

Lines changed: 60 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from py4j.protocol import Py4JJavaError
1616

17+
1718
################
1819
# DRIVER TESTS #
1920
################
@@ -166,6 +167,65 @@ def stageInfo(self): # noqa: N802
166167
assert mock_hub.kwargs["data"]["name"] == "run-job"
167168

168169

170+
def test_sentry_listener_on_stage_submitted_no_attempt_id(sentry_listener):
171+
listener = sentry_listener
172+
with patch.object(listener, "_add_breadcrumb") as mock_add_breadcrumb:
173+
174+
class StageInfo:
175+
def stageId(self): # noqa: N802
176+
return "sample-stage-id-submit"
177+
178+
def name(self):
179+
return "run-job"
180+
181+
def attemptNumber(self): # noqa: N802
182+
return 14
183+
184+
class MockStageSubmitted:
185+
def stageInfo(self): # noqa: N802
186+
stageinf = StageInfo()
187+
return stageinf
188+
189+
mock_stage_submitted = MockStageSubmitted()
190+
listener.onStageSubmitted(mock_stage_submitted)
191+
192+
mock_add_breadcrumb.assert_called_once()
193+
mock_hub = mock_add_breadcrumb.call_args
194+
195+
assert mock_hub.kwargs["level"] == "info"
196+
assert "sample-stage-id-submit" in mock_hub.kwargs["message"]
197+
assert mock_hub.kwargs["data"]["attemptId"] == 14
198+
assert mock_hub.kwargs["data"]["name"] == "run-job"
199+
200+
201+
def test_sentry_listener_on_stage_submitted_no_attempt_id_or_number(sentry_listener):
202+
listener = sentry_listener
203+
with patch.object(listener, "_add_breadcrumb") as mock_add_breadcrumb:
204+
205+
class StageInfo:
206+
def stageId(self): # noqa: N802
207+
return "sample-stage-id-submit"
208+
209+
def name(self):
210+
return "run-job"
211+
212+
class MockStageSubmitted:
213+
def stageInfo(self): # noqa: N802
214+
stageinf = StageInfo()
215+
return stageinf
216+
217+
mock_stage_submitted = MockStageSubmitted()
218+
listener.onStageSubmitted(mock_stage_submitted)
219+
220+
mock_add_breadcrumb.assert_called_once()
221+
mock_hub = mock_add_breadcrumb.call_args
222+
223+
assert mock_hub.kwargs["level"] == "info"
224+
assert "sample-stage-id-submit" in mock_hub.kwargs["message"]
225+
assert "attemptId" not in mock_hub.kwargs["data"]
226+
assert mock_hub.kwargs["data"]["name"] == "run-job"
227+
228+
169229
@pytest.fixture
170230
def get_mock_stage_completed():
171231
def _inner(failure_reason):
@@ -282,71 +342,3 @@ def mock_main():
282342
"partitionId": "2",
283343
"taskAttemptId": "3",
284344
}
285-
286-
287-
def test_sentry_listener_on_stage_submitted_no_attempt_id(sentry_listener):
288-
listener = sentry_listener
289-
with patch.object(listener, "_add_breadcrumb") as mock_add_breadcrumb:
290-
291-
class StageInfo:
292-
def stageId(self): # noqa: N802
293-
return "sample-stage-id-submit"
294-
295-
def name(self):
296-
return "run-job"
297-
298-
def attemptId(self): # noqa: N802
299-
raise Py4JJavaError
300-
301-
def attemptNumber(self): # noqa: N802
302-
return 14
303-
304-
class MockStageSubmitted:
305-
def stageInfo(self): # noqa: N802
306-
stageinf = StageInfo()
307-
return stageinf
308-
309-
mock_stage_submitted = MockStageSubmitted()
310-
listener.onStageSubmitted(mock_stage_submitted)
311-
312-
mock_add_breadcrumb.assert_called_once()
313-
mock_hub = mock_add_breadcrumb.call_args
314-
315-
assert mock_hub.kwargs["level"] == "info"
316-
assert "sample-stage-id-submit" in mock_hub.kwargs["message"]
317-
assert mock_hub.kwargs["data"]["attemptId"] == 14
318-
assert mock_hub.kwargs["data"]["name"] == "run-job"
319-
320-
321-
def test_sentry_listener_on_stage_submitted_no_attempt_id_or_number(sentry_listener):
322-
listener = sentry_listener
323-
with patch.object(listener, "_add_breadcrumb") as mock_add_breadcrumb:
324-
325-
class StageInfo:
326-
def stageId(self): # noqa: N802
327-
return "sample-stage-id-submit"
328-
329-
def name(self):
330-
return "run-job"
331-
332-
def attemptId(self): # noqa: N802
333-
raise Py4JJavaError
334-
335-
def attemptNumber(self): # noqa: N802
336-
raise Py4JJavaError
337-
338-
class MockStageSubmitted:
339-
def stageInfo(self): # noqa: N802
340-
stageinf = StageInfo()
341-
return stageinf
342-
343-
mock_stage_submitted = MockStageSubmitted()
344-
listener.onStageSubmitted(mock_stage_submitted)
345-
346-
mock_add_breadcrumb.assert_called_once()
347-
mock_hub = mock_add_breadcrumb.call_args
348-
349-
assert mock_hub.kwargs["level"] == "info"
350-
assert "sample-stage-id-submit" in mock_hub.kwargs["message"]
351-
assert "attemptId" not in mock_hub.kwargs["data"]
352-
assert mock_hub.kwargs["data"]["name"] == "run-job"

0 commit comments

Comments
 (0)