You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our check that the runtime is the same on the replaced client as is on the worker does not work if the runtime is not set on the client (i.e. lazily uses the default). We need to either more eagerly set the runtime default on the client config for the service, or use a different way to obtain the runtime of the bridge service client when comparing.
Replication:
importasynciofromdataclassesimportdataclassfromdatetimeimporttimedeltafromtemporalioimportactivity, workflowfromtemporalio.clientimportClientfromtemporalio.workerimportWorker# While we could use multiple parameters in the activity, Temporal strongly# encourages using a single dataclass instead which can have fields added to it# in a backwards-compatible way.@dataclassclassComposeGreetingInput:
greeting: strname: str# Basic activity that logs and does string concatenation@activity.defnasyncdefcompose_greeting(input: ComposeGreetingInput) ->str:
activity.logger.info("Running activity with parameter %s"%input)
returnf"{input.greeting}, {input.name}!"# Basic workflow that logs and invokes an activity@workflow.defnclassGreetingWorkflow:
@workflow.runasyncdefrun(self, name: str) ->str:
workflow.logger.info("Running workflow with parameter %s"%name)
returnawaitworkflow.execute_activity(
compose_greeting,
ComposeGreetingInput("Hello", name),
start_to_close_timeout=timedelta(seconds=10),
)
asyncdefmain():
# Uncomment the lines below to see logging output# import logging# logging.basicConfig(level=logging.INFO)# Start clientclient=awaitClient.connect("localhost:7233")
client_2=awaitClient.connect("localhost:7233")
# Run a worker for the workflowasyncwithWorker(
client,
task_queue="hello-activity-task-queue",
workflows=[GreetingWorkflow],
activities=[compose_greeting],
) asworker:
worker.client=client_2# While the worker is running, use the client to run the workflow and# print out its result. Note, in many production setups, the client# would be in a completely separate process from the worker.result=awaitclient.execute_workflow(
GreetingWorkflow.run,
"World",
id="hello-activity-workflow-id",
task_queue="hello-activity-task-queue",
)
print(f"Result: {result}")
if__name__=="__main__":
asyncio.run(main())
In the meantime, simply using default=temporalio.runtime.Runtime.default() in the client connect calls will work around the issue.
The text was updated successfully, but these errors were encountered:
Describe the bug
Our check that the runtime is the same on the replaced client as is on the worker does not work if the runtime is not set on the client (i.e. lazily uses the default). We need to either more eagerly set the runtime default on the client config for the service, or use a different way to obtain the runtime of the bridge service client when comparing.
Replication:
In the meantime, simply using
default=temporalio.runtime.Runtime.default()
in the clientconnect
calls will work around the issue.The text was updated successfully, but these errors were encountered: