cadence-java-client icon indicating copy to clipboard operation
cadence-java-client copied to clipboard

DecisionTaskFailure if pagination takes longer than task timeout

Open mfateev opened this issue 5 years ago • 0 comments

If pagination through the history takes longer than decision task timeout the following failure is recorded:

2020-02-18 12:59:00.507 ERROR 11 --- [oarding": 18633] c.u.c.internal.worker.PollerOptions      : uncaught exception
java.lang.RuntimeException: Failure processing decision task. WorkflowID=***_JiraMonitor, RunID=cdb52df3-7be2-4e5a-9322-bcae61c9c1ba
	at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.wrapFailure(WorkflowWorker.java:283)
	at com.uber.cadence.internal.worker.WorkflowWorker$TaskHandlerImpl.wrapFailure(WorkflowWorker.java:229)
	at com.uber.cadence.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:76)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Invalid interval: PT-0.415S
	at com.uber.cadence.common.RetryOptions$Builder.setExpiration(RetryOptions.java:161)
	at com.uber.cadence.internal.replay.ReplayDecider$DecisionTaskWithHistoryIteratorImpl$1.next(ReplayDecider.java:604)
	at com.uber.cadence.internal.replay.ReplayDecider$DecisionTaskWithHistoryIteratorImpl$1.next(ReplayDecider.java:588)
	at com.uber.cadence.internal.replay.HistoryHelper$EventsIterator.next(HistoryHelper.java:152)
	at com.uber.cadence.internal.replay.HistoryHelper$DecisionEventsIterator.next(HistoryHelper.java:232)
	at com.uber.cadence.internal.replay.ReplayDecider.decideImpl(ReplayDecider.java:391)
	at com.uber.cadence.internal.replay.ReplayDecider.decide(ReplayDecider.java:359)
	at com.uber.cadence.internal.replay.ReplayDecisionTaskHandler.processDecision(ReplayDecisionTaskHandler.java:145)
	at com.uber.cadence.internal.replay.ReplayDecisionTaskHandler.handleDecisionTaskImpl(ReplayDecisionTaskHandler.java:125)
	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)
	... 3 common frames omitted

The root cause is the negative timeout generated by subtracting elapsed time from the decision task timeout here. The solution is to fail the decision task with a more clear message about the decision task timeout.

mfateev avatar Feb 18 '20 16:02 mfateev