uber / cadence-web

Web UI for visualizing workflows on Cadence
Other
392 stars 106 forks source link

Query feature is broken for Java workflows #194

Closed sokada1221 closed 3 years ago

sokada1221 commented 4 years ago

Describe the bug Query feature on Cadence UI is broken for Java workflows. Trailing ',' shows up for query types.

To Reproduce Is the issue reproducible?

Steps to reproduce the behavior:

  1. Run Java workflow with 2 or more query methods
  2. Check the list of queries on Cadence UI

Expected behavior Query feature to work for Java workflows as well

Screenshots image

Additional context N/A

sokada1221 commented 4 years ago

Root cause: cadence-web is getting the list of query types from the exception message. Since message formats are different for Go SDK and Java SDK, the parsing is failing for Java exception messages.

Go exception message:

QueryFailedError{Message: unknown queryType a. KnownQueryTypes=[__stack_trace __open_sessions state2 state]}

Java exception message:

QueryFailedError{Message: java.lang.IllegalArgumentException: Unknown query type: a, knownTypes=[GreetingWorkflow::queryGreeting, GreetingWorkflow::queryGreeting2]
    at com.uber.cadence.internal.sync.SyncDecisionContext.query(SyncDecisionContext.java:545)
    at com.uber.cadence.internal.sync.WorkflowRunnable.query(WorkflowRunnable.java:69)
    at com.uber.cadence.internal.sync.SyncWorkflow.query(SyncWorkflow.java:149)
    at com.uber.cadence.internal.replay.ReplayDecider.lambda$query$f351f263$1(ReplayDecider.java:545)
    at com.uber.cadence.internal.replay.ReplayDecider.decideImpl(ReplayDecider.java:445)
    at com.uber.cadence.internal.replay.ReplayDecider.query(ReplayDecider.java:545)
    at com.uber.cadence.internal.replay.ReplayDecisionTaskHandler.processQuery(ReplayDecisionTaskHandler.java:219)
    at com.uber.cadence.internal.replay.ReplayDecisionTaskHandler.handleDecisionTaskImpl(ReplayDecisionTaskHandler.java:123)
    at com.uber.cadence.internal.replay.ReplayDecisionTaskHandler.handleDecisionTask(ReplayDecisionTaskHandler.java:86)
    at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:257)
    at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:229)
    at com.uber.cadence.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:71)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
}
just-at-uber commented 4 years ago

Hi @sokada1221 ,

Thanks for opening a PR for this issue. I will try to review this week.

Thanks!