Java HelloUpdate example hangs calling addGreeting update

I’m trying out samples-java/core/src/main/java/io/temporal/samples/hello/HelloUpdate.java at main · temporalio/samples-java · GitHub

$ temporal --version
temporal version 0.11.0 (server 1.22.4) (ui 2.21.3)

I start Temporal with

temporal server start-dev --dynamic-config-value frontend.enableUpdateWorkflowExecution=true

In samples-java, I’m on the latest commit

git log -n1
commit 637c2e66fd2dab43d9f3f39e5fd9c55e4f3884f0 (HEAD -> main, origin/main, origin/HEAD)
Author: Tihomir Surdilovic <tihomir@temporal.io>
Date:   Sun Jul 21 19:55:18 2024 -0400
...
$ ./gradlew --version

------------------------------------------------------------
Gradle 8.0.1
------------------------------------------------------------

Build time:   2023-02-17 20:09:48 UTC
Revision:     68959bf76cef4d28c678f2e2085ee84e8647b77a

Kotlin:       1.8.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          17.0.11 (Ubuntu 17.0.11+9-Ubuntu-1)
OS:           Linux 6.8.0-38-generic amd64

I run the HelloUpdate example:

./gradlew -q execute -PmainClass=io.temporal.samples.hello.HelloUpdate

The client runs up to the first workflow update call: samples-java/core/src/main/java/io/temporal/samples/hello/HelloUpdate.java at main · temporalio/samples-java · GitHub

The update implementation samples-java/core/src/main/java/io/temporal/samples/hello/HelloUpdate.java at main · temporalio/samples-java · GitHub executes and returns.

In the Temporal UI, the latest workflow event is “WorkflowExecutionUpdateCompleted”.

Back at the client, the workflow update call doesn’t return, and the client remains hung at that point.

Hi @awwx

tested with docker-compose and temporal cli temporal version 0.13.2 (server 1.24.1) (ui 2.28.0) and is working for me

Do you see any errors in the console?

Antonio

Thank you @antonio.perez

Can you share your docker-compose file?

Here’s the “temporal server start-dev” output: HelloUpdate run · GitHub

I also noticed that the “temporal” command was using 140% CPU.

Oh, perhaps you’re referring to GitHub - temporalio/docker-compose: Temporal docker-compose files ?

When using docker-compose, where would I set frontend.enableUpdateWorkflowExecution=true ?

Hi @awwx

When using docker-compose, where would I set frontend.enableUpdateWorkflowExecution=true ?

if you use the default docker-compose.yml it points to a dynamic config file docker-compose/docker-compose.yml at dd9a623f226c54749ced98949f2a337d5dd24fdf · temporalio/docker-compose · GitHub

where you can add it ,

frontend.enableUpdateWorkflowExecution:
  - value: true

there is some documentation here Temporal Cluster dynamic configuration reference | Temporal Documentation

But it shouldn’t make any difference in this case, the code should work with both.

Antonio

Thank you @antonio.perez . The HelloUpdate example is working using docker-compose and frontend.enableUpdateWorkflowExecution set in the dynamic config. The CPU is also idle.

I wasn’t sure what you meant by this, that frontend.enableUpdateWorkflowExecution wasn’t needed? If I run HelloUpdate without setting the config, I get io.grpc.StatusRuntimeException: PERMISSION_DENIED: UpdateWorkflowExecution operation is disabled on this namespace

I added an issue for the example hanging when using temporal server start-dev : Java HelloUpdate example hangs when using `temporal server start-dev` · Issue #6352 · temporalio/temporal · GitHub

This turned out to be a outdated download link for the Temporal CLI in the documentation (Download points to outdated CLI version in "Set up a local development environment for Temporal and Java")

1 Like