QTZPOC-20

QTZPOC-20: Raise non-retryable Temporal ApplicationError when no data is returned from query in minimal retrain workflow.
This commit is contained in:
2026-09-04 11:55:18 -03:00
parent d257e70465
commit 72a55c0900
2 changed files with 12 additions and 5 deletions

View File

@@ -5,6 +5,7 @@ with workflow.unsafe.imports_passed_through():
from typing import Any
from sientia_do.temporal.policies import retry_policy
from temporalio.exceptions import ApplicationError
from laborious.activities.activities import Activities
from laborious.utils.models.minio_dataframe_payload import MinioDataFramePayload
@@ -87,7 +88,11 @@ class MinimalRetrain:
storage_payload = MinioDataFramePayload.from_dict(storage_result)
if not storage_payload.has_data():
raise ValueError('No data returned from query')
raise ApplicationError(
'No data returned from query',
type='NoDataReturnedError',
non_retryable=True,
)
experiment_response = await workflow.execute_activity_method(
Activities.retrain_model,

View File

@@ -1,6 +1,7 @@
from unittest.mock import ANY, AsyncMock, call, patch
from pytest import fixture, mark
from pytest import fixture, mark, raises
from temporalio.exceptions import ApplicationError
from laborious.activities.activities import Activities
from laborious.workflows.minimal_retrain import MinimalRetrain
@@ -194,11 +195,12 @@ async def test_run_storage_fail(workflow_mock: AsyncMock, minimal_retrain: Minim
]
)
from pytest import raises
with raises(ValueError, match='No data returned from query'):
with raises(ApplicationError, match='No data returned from query') as exc_info:
await minimal_retrain.run(input_data)
assert exc_info.value.non_retryable is True
assert exc_info.value.type == 'NoDataReturnedError'
workflow_mock.execute_activity_method.assert_called_once_with(
Activities.load_query_with_minio_offload,
{