uber / cadence-java-client

Java framework for Cadence Workflow Service
https://cadenceworkflow.io
Other
143 stars 106 forks source link

Remove legacy code that execute activity with retryOption but without server side retry #655

Open longquanzheng opened 2 years ago

longquanzheng commented 2 years ago

https://github.com/uber/cadence-java-client/blob/dca853aaa047071caab8b16a345474aa3708d162/src/main/java/com/uber/cadence/internal/sync/SyncDecisionContext.java#L134

Related to https://github.com/uber/cadence-java-client/issues/654

During replay, if an activity doesn't not exist in the history, the replay would run into this branch and throw some weird error messages.

longquanzheng commented 2 years ago

It will throw error like:

java.lang.IllegalArgumentException: No value found for mutableSideEffectId=17eb87a3-bbd5-3310-b2c5-48ac24000057, during replay it usually indicates a different workflow runId than the original one
    at com.uber.cadence.internal.sync.SyncDecisionContext.mutableSideEffect(SyncDecisionContext.java:557)
    at com.uber.cadence.internal.sync.WorkflowInternal.mutableSideEffect(WorkflowInternal.java:277)
    at com.uber.cadence.internal.sync.WorkflowRetryerInternal.retryAsync(WorkflowRetryerInternal.java:106)
    at com.uber.cadence.internal.sync.WorkflowRetryerInternal.retryAsync(WorkflowRetryerInternal.java:95)
    at com.uber.cadence.internal.sync.SyncDecisionContext.executeActivity(SyncDecisionContext.java:136)
    at com.uber.cadence.internal.sync.ActivityStubImpl.executeAsync(ActivityStubImpl.java:44)
    at com.uber.cadence.internal.sync.ActivityStubBase.execute(ActivityStubBase.java:36)
    at com.uber.cadence.internal.sync.ActivityStubImpl.execute(ActivityStubImpl.java:26)
    at com.uber.cadence.internal.sync.ActivityInvocationHandler.lambda$getActivityFunc$0(ActivityInvocationHandler.java:51)
    at com.uber.cadence.internal.sync.ActivityInvocationHandlerBase.invoke(ActivityInvocationHandlerBase.java:76)
    at com.sun.proxy.$Proxy164.getEncryptedId(Unknown Source)
    at com.indeed.flex.workflow.workflows.sainsbury.compliance.SainsburyImpl.start(SainsburyImpl.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.uber.cadence.internal.sync.POJOWorkflowImplementationFactory$POJOWorkflowImplementation.execute(POJOWorkflowImplementationFactory.java:246)
    at com.uber.cadence.internal.sync.WorkflowRunnable.run(WorkflowRunnable.java:47)
    at com.uber.cadence.internal.sync.CancellationScopeImpl.run(CancellationScopeImpl.java:102)
    at com.uber.cadence.internal.sync.WorkflowThreadImpl$RunnableWrapper.run(WorkflowThreadImpl.java:99)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    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)