Skip to content

Commit 7d55171

Browse files
Classify invocable deadline overruns consistently
Classify asyncio timeout overruns from invocable activity handlers as deadline exceeded failures.
1 parent 6bed0c6 commit 7d55171

2 files changed

Lines changed: 5 additions & 2 deletions

File tree

src/durable_workflow/invocable.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ async def handle(self, envelope: Mapping[str, Any]) -> dict[str, Any]:
103103
stack_trace=traceback.format_exc(),
104104
retryable=False,
105105
)
106-
except TimeoutError as exc:
106+
except (asyncio.TimeoutError, TimeoutError) as exc:
107107
return self._failure(
108108
task_input,
109109
started,

tests/test_invocable.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717

1818

1919
def load_fixture(name: str) -> dict[str, Any]:
20-
return json.loads((FIXTURES / name).read_text())
20+
loaded: dict[str, Any] = json.loads((FIXTURES / name).read_text())
21+
return loaded
2122

2223

2324
def _iso(timestamp: datetime) -> str:
@@ -118,6 +119,8 @@ async def slow_charge() -> dict[str, bool]:
118119
assert result.failed is True
119120
assert result.retryable is True
120121
assert result.deadline_exceeded is True
122+
assert result.failure is not None
123+
assert result.failure.timeout_type == "deadline_exceeded"
121124
assert result.result is None
122125

123126

0 commit comments

Comments
 (0)