diff --git a/temporalio/worker/_workflow.py b/temporalio/worker/_workflow.py index c564a0482..c7b89206c 100644 --- a/temporalio/worker/_workflow.py +++ b/temporalio/worker/_workflow.py @@ -522,6 +522,7 @@ def _create_workflow_instance( execution_timeout=init.workflow_execution_timeout.ToTimedelta() if init.HasField("workflow_execution_timeout") else None, + first_execution_run_id=init.first_execution_run_id, headers=dict(init.headers), namespace=self._namespace, parent=parent, diff --git a/temporalio/worker/workflow_sandbox/_runner.py b/temporalio/worker/workflow_sandbox/_runner.py index 40208eea6..ba1a7f3ce 100644 --- a/temporalio/worker/workflow_sandbox/_runner.py +++ b/temporalio/worker/workflow_sandbox/_runner.py @@ -33,6 +33,7 @@ continued_run_id=None, cron_schedule=None, execution_timeout=None, + first_execution_run_id="sandbox-validate-first-run_id", headers={}, namespace="sandbox-validate-namespace", parent=None, diff --git a/temporalio/workflow.py b/temporalio/workflow.py index b72097d5a..f26dcad12 100644 --- a/temporalio/workflow.py +++ b/temporalio/workflow.py @@ -493,6 +493,7 @@ class Info: continued_run_id: Optional[str] cron_schedule: Optional[str] execution_timeout: Optional[timedelta] + first_execution_run_id: str headers: Mapping[str, temporalio.api.common.v1.Payload] namespace: str parent: Optional[ParentInfo] diff --git a/tests/worker/test_workflow.py b/tests/worker/test_workflow.py index 52dd97d8e..4f3b689b3 100644 --- a/tests/worker/test_workflow.py +++ b/tests/worker/test_workflow.py @@ -1645,6 +1645,7 @@ async def run(self, past_run_ids: List[str]) -> List[str]: info = workflow.info() if info.continued_run_id: past_run_ids.append(info.continued_run_id) + assert info.first_execution_run_id == past_run_ids[0] workflow.continue_as_new( past_run_ids, # Add memo and retry policy to check