Skip to content

Commit 8078cf4

Browse files
committed
fix: Release dedup settings lock on callback FAILURE
1 parent cbcab8c commit 8078cf4

2 files changed

Lines changed: 42 additions & 7 deletions

File tree

src/country_workspace/contrib/hope/push/orchestration.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,12 @@ def _lock_and_fail_rdp(rdp_id: int, *, reason: str) -> None:
169169
with transaction.atomic():
170170
locked = lock_rdp_for_update(pk=rdp_id)
171171
if locked.status == Rdp.PushStatus.DEDUP_PENDING:
172-
set_rdp_push_status(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
172+
set_rdp_push_status(
173+
rdp=locked,
174+
status=Rdp.PushStatus.FAILURE,
175+
hope_rdi_id="N/A",
176+
is_dedup_settings_locked=False,
177+
)
173178
logger.warning(
174179
"dedup_callback_handle: rdp_id=%s marked FAILURE (%s)",
175180
rdp_id,

tests/contrib/hope/push/test_dedup_callback_flow.py

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,12 @@ def test_dedup_callback_handle_no_dedup_set_id(mocker: MockerFixture) -> None:
259259

260260
dedup_callback_handle(rdp_id=99, job_id=10)
261261

262-
set_status.assert_called_once_with(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
262+
set_status.assert_called_once_with(
263+
rdp=locked,
264+
status=Rdp.PushStatus.FAILURE,
265+
hope_rdi_id="N/A",
266+
is_dedup_settings_locked=False,
267+
)
263268

264269

265270
def test_dedup_callback_handle_dedup_engine_unavailable(mocker: MockerFixture) -> None:
@@ -314,7 +319,12 @@ def test_dedup_callback_handle_terminal_failure_marks_rdp_failed(
314319

315320
dedup_callback_handle(rdp_id=99, job_id=10)
316321

317-
set_status.assert_called_once_with(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
322+
set_status.assert_called_once_with(
323+
rdp=locked,
324+
status=Rdp.PushStatus.FAILURE,
325+
hope_rdi_id="N/A",
326+
is_dedup_settings_locked=False,
327+
)
318328

319329

320330
@pytest.mark.parametrize(
@@ -398,7 +408,12 @@ def test_dedup_callback_handle_deduplicated_exceeds_threshold_marks_failure(mock
398408

399409
dedup_callback_handle(rdp_id=99, job_id=10)
400410

401-
set_status.assert_called_once_with(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
411+
set_status.assert_called_once_with(
412+
rdp=locked,
413+
status=Rdp.PushStatus.FAILURE,
414+
hope_rdi_id="N/A",
415+
is_dedup_settings_locked=False,
416+
)
402417
create_job.assert_not_called()
403418

404419

@@ -416,7 +431,12 @@ def test_dedup_callback_handle_default_threshold_is_zero(mocker: MockerFixture)
416431

417432
dedup_callback_handle(rdp_id=99, job_id=10)
418433

419-
set_status.assert_called_once_with(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
434+
set_status.assert_called_once_with(
435+
rdp=locked,
436+
status=Rdp.PushStatus.FAILURE,
437+
hope_rdi_id="N/A",
438+
is_dedup_settings_locked=False,
439+
)
420440

421441

422442
def test_dedup_callback_handle_zero_findings_within_threshold_queues_push(mocker: MockerFixture) -> None:
@@ -452,7 +472,12 @@ def test_dedup_callback_handle_missing_origin_job_marks_failure(mocker: MockerFi
452472
dedup_callback_handle(rdp_id=99, job_id=10)
453473

454474
AsyncJob.objects.get.assert_called_once_with(pk=10, rdp_id=99)
455-
set_status.assert_called_once_with(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
475+
set_status.assert_called_once_with(
476+
rdp=locked,
477+
status=Rdp.PushStatus.FAILURE,
478+
hope_rdi_id="N/A",
479+
is_dedup_settings_locked=False,
480+
)
456481
create_job.assert_not_called()
457482

458483

@@ -470,5 +495,10 @@ def test_dedup_callback_handle_zero_individuals_marks_failure(mocker: MockerFixt
470495

471496
dedup_callback_handle(rdp_id=99, job_id=10)
472497

473-
set_status.assert_called_once_with(rdp=locked, status=Rdp.PushStatus.FAILURE, hope_rdi_id="N/A")
498+
set_status.assert_called_once_with(
499+
rdp=locked,
500+
status=Rdp.PushStatus.FAILURE,
501+
hope_rdi_id="N/A",
502+
is_dedup_settings_locked=False,
503+
)
474504
create_job.assert_not_called()

0 commit comments

Comments
 (0)