My use case is to retry for specific error types and my understanding is that Using retry policy alongside wrapping my errors into retryable/non-retryable error would work.
My question is that: is retry policy applicable to platform (temporal) error? in other words, if an error is thrown by temporal itself, will the activity be re-executed? assume retry policy allows retry.
There are specific scenarios when an activity task can be lost in transit after it is marked as started. In this case, it will be marked as timed out after StartToCloseTimeout and retried according to the retry options.
Is there a chance an error may be returned/thrown after user defined activity code has been executed?
My activity is calling an external API, which is not able to provide idempotency guaranteed, so I want my activity to retry only for some specific error types.
Just realize that activity timeout will trigger retry for the activity, which may be dangerous for my use case, since the external API does not have idempotency in place.
Is there a way to disable retry for activity timeout and allow retry for specific error types (error type can be decided based on the external API response).
If an activity fails due to a temporary platform problem, like a network hiccup or server issue, and a retry is allowed, it will automatically run again. But if the problem is permanent, it won’t be retried.
For example worker crashing after receiving a task but before invoking the activity function. Or frontend crashing while delivering the task.
Thanks, I agree that timeouts and retries are needed for reliability.
In my case, nothing crashed as far as I can see: the pod had no restarts, the app process stayed alive, and I verified that the worker was able to process other tasks.
I’ve seen similar cases with both Python and Java SDK workers.
So I’m trying to understand whether there are any less obvious scenarios where an Activity can be marked as STARTED / assigned to a worker, but never reach my Activity function code.
And more importantly: how would you recommend investigating such cases and reducing the probability of them happening?