Skip to content

Commit 3c92c40

Browse files
committed
Handle non-combined cases
1 parent 1741a6e commit 3c92c40

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

temporalio/worker/_replayer.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,21 @@ def __init__(
8383
disable_safe_workflow_eviction=disable_safe_workflow_eviction,
8484
header_codec_behavior=header_codec_behavior,
8585
)
86+
87+
# Allow plugins to configure shared configurations with worker
8688
root_worker_plugin: temporalio.worker.Plugin = temporalio.worker._worker._RootPlugin()
87-
root_client_plugin: temporalio.client.Plugin = temporalio.client._RootPlugin()
88-
for plugin in reversed(plugins):
89+
for plugin in reversed([plugin for plugin in plugins if isinstance(plugin, temporalio.worker.Plugin)]):
8990
root_worker_plugin = plugin.init_worker_plugin(root_worker_plugin)
90-
root_client_plugin = plugin.init_client_plugin(root_client_plugin)
9191

92-
# Allow plugins to configure shared configurations with worker
9392
worker_config = WorkerConfig(**{k: v for k, v in self._config.items() if k in WorkerConfig.__annotations__})
9493
worker_config = root_worker_plugin.configure_worker(worker_config)
9594
self._config.update({k: v for k, v in worker_config.items() if k in ReplayerConfig.__annotations__})
9695

9796
# Allow plugins to configure shared configurations with client
97+
root_client_plugin: temporalio.client.Plugin = temporalio.client._RootPlugin()
98+
for plugin in reversed([plugin for plugin in plugins if isinstance(plugin, temporalio.client.Plugin)]):
99+
root_client_plugin = plugin.init_client_plugin(root_client_plugin)
100+
98101
client_config = ClientConfig(**{k: v for k, v in self._config.items() if k in ClientConfig.__annotations__})
99102
client_config = root_client_plugin.configure_client(client_config)
100103
self._config.update({k: v for k, v in client_config.items() if k in ReplayerConfig.__annotations__})

tests/test_plugins.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,3 +179,20 @@ async def test_replay(client: Client) -> None:
179179
assert replayer.config()["data_converter"] == pydantic_data_converter
180180

181181
await replayer.replay_workflow(await handle.fetch_history())
182+
183+
replayer = Replayer(
184+
workflows=[HelloWorkflow],
185+
plugins=[MyClientPlugin()]
186+
)
187+
replayer = Replayer(
188+
workflows=[HelloWorkflow],
189+
plugins=[MyWorkerPlugin()]
190+
)
191+
replayer = Replayer(
192+
workflows=[HelloWorkflow],
193+
plugins=[MyClientPlugin(), MyWorkerPlugin()]
194+
)
195+
replayer = Replayer(
196+
workflows=[HelloWorkflow],
197+
plugins=[MyWorkerPlugin(), MyClientPlugin(), MyCombinedPlugin()]
198+
)

0 commit comments

Comments
 (0)