Currently WorkflowWorker and ActivityWorker retries on all error types, causing it to go into infinite retry loop if certain non-retryable error is encountered. For example, decision timeout.
2019-01-16 12:11:53,762 WARN [null build-tasks : 4] c.u.c.i.c.Retryer [Retryer.java:115] Retrying after failure
com.uber.cadence.BadRequestError: Expired decision: expectedHistorySize=32, actualHistorySize=36
at com.uber.cadence.internal.testservice.TestWorkflowMutableStateImpl.lambda$completeDecisionTask$2(TestWorkflowMutableStateImpl.java:287)
at com.uber.cadence.internal.testservice.TestWorkflowMutableStateImpl.update(TestWorkflowMutableStateImpl.java:201)
at com.uber.cadence.internal.testservice.TestWorkflowMutableStateImpl.completeDecisionUpdate(TestWorkflowMutableStateImpl.java:185)
at com.uber.cadence.internal.testservice.TestWorkflowMutableStateImpl.completeDecisionTask(TestWorkflowMutableStateImpl.java:279)
at com.uber.cadence.internal.testservice.TestWorkflowService.RespondDecisionTaskCompleted(TestWorkflowService.java:335)
at com.uber.cadence.internal.sync.TestWorkflowEnvironmentInternal$WorkflowServiceWrapper.RespondDecisionTaskCompleted(TestWorkflowEnvironmentInternal.java:653)
at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.lambda$sendReply$0(WorkflowWorker.java:273)
at com.uber.cadence.internal.common.Retryer.lambda$retry$0(Retryer.java:75)
at com.uber.cadence.internal.common.Retryer.retryWithResult(Retryer.java:93)
at com.uber.cadence.internal.common.Retryer.retry(Retryer.java:72)
at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.sendReply(WorkflowWorker.java:273)
at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:242)
at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.handle(WorkflowWorker.java:221)
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)
Currently WorkflowWorker and ActivityWorker retries on all error types, causing it to go into infinite retry loop if certain non-retryable error is encountered. For example, decision timeout.