Skip to content

Commit f7f724b

Browse files
committed
Handle empty async export state
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 76f2163a-0773-4889-b627-1bd4e5c7bea0
1 parent b8648be commit f7f724b

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

durabletask/extensions/history_export/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ async def get_job(self, job_id: str) -> ExportJobDescription | None:
534534
if meta is None:
535535
return None
536536
state = meta.get_typed_state()
537-
if not isinstance(state, dict):
537+
if not isinstance(state, dict) or not state:
538538
return None
539539
return ExportJobDescription.from_state_dict(job_id, cast("dict[str, Any]", state))
540540

tests/durabletask/extensions/history_export/test_client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import gzip
1414
import json
1515
import threading
16+
from unittest.mock import AsyncMock, MagicMock
1617
from datetime import datetime, timedelta, timezone
1718

1819
import pytest
@@ -175,6 +176,16 @@ async def test_async_client_create_list_wait_and_delete(
175176
assert await export_client.get_job(desc.job_id) is None
176177

177178

179+
async def test_async_client_get_job_returns_none_for_empty_state(writer):
180+
dt_client = MagicMock()
181+
metadata = MagicMock()
182+
metadata.get_typed_state.return_value = {}
183+
dt_client.get_entity = AsyncMock(return_value=metadata)
184+
export_client = AsyncExportHistoryClient(dt_client, writer)
185+
186+
assert await export_client.get_job("empty-state") is None
187+
188+
178189
def test_get_job_returns_none_for_unknown_id(export_client):
179190
assert export_client.get_job("does-not-exist") is None
180191

0 commit comments

Comments
 (0)