Skip to content

Commit 85ac861

Browse files
committed
Wire update context
1 parent b29d6eb commit 85ac861

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

temporalio/client.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4991,6 +4991,12 @@ def __init__(
49914991
self._workflow_run_id = workflow_run_id
49924992
self._result_type = result_type
49934993
self._known_outcome = known_outcome
4994+
self._data_converter = self._client.data_converter._with_context(
4995+
WorkflowSerializationContext(
4996+
namespace=self._client.namespace,
4997+
workflow_id=self.workflow_id,
4998+
)
4999+
)
49945000

49955001
@property
49965002
def id(self) -> str:
@@ -5038,14 +5044,12 @@ async def result(
50385044
assert self._known_outcome
50395045
if self._known_outcome.HasField("failure"):
50405046
raise WorkflowUpdateFailedError(
5041-
await self._client.data_converter.decode_failure(
5042-
self._known_outcome.failure
5043-
),
5047+
await self._data_converter.decode_failure(self._known_outcome.failure),
50445048
)
50455049
if not self._known_outcome.success.payloads:
50465050
return None # type: ignore
50475051
type_hints = [self._result_type] if self._result_type else None
5048-
results = await self._client.data_converter.decode(
5052+
results = await self._data_converter.decode(
50495053
self._known_outcome.success.payloads, type_hints
50505054
)
50515055
if not results:
@@ -6227,8 +6231,14 @@ async def _build_update_workflow_execution_request(
62276231
),
62286232
)
62296233
if input.args:
6234+
context = temporalio.converter.WorkflowSerializationContext(
6235+
namespace=self._client.namespace,
6236+
workflow_id=workflow_id,
6237+
)
62306238
req.request.input.args.payloads.extend(
6231-
await self._client.data_converter.encode(input.args)
6239+
await self._client.data_converter._with_context(context).encode(
6240+
input.args
6241+
)
62326242
)
62336243
if input.headers is not None:
62346244
await self._apply_headers(input.headers, req.request.input.header.fields)

temporalio/worker/_workflow_instance.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,11 +207,23 @@ def __init__(self, det: WorkflowInstanceDetails) -> None:
207207
# No init for AbstractEventLoop
208208
WorkflowInstance.__init__(self)
209209
temporalio.workflow._Runtime.__init__(self)
210-
self._payload_converter = det.payload_converter_class()
211210
self._failure_converter = det.failure_converter_class()
212211
self._defn = det.defn
213212
self._workflow_input: Optional[ExecuteWorkflowInput] = None
214213
self._info = det.info
214+
215+
self._payload_converter = det.payload_converter_class()
216+
if isinstance(
217+
self._payload_converter, temporalio.converter.WithSerializationContext
218+
):
219+
serialization_context = temporalio.converter.WorkflowSerializationContext(
220+
namespace=self._info.namespace,
221+
workflow_id=self._info.workflow_id,
222+
)
223+
self._payload_converter = self._payload_converter.with_context(
224+
serialization_context
225+
)
226+
215227
self._extern_functions = det.extern_functions
216228
self._disable_eager_activity_execution = det.disable_eager_activity_execution
217229
self._worker_level_failure_exception_types = (

0 commit comments

Comments
 (0)