so i went through the documentation it says here - Class: ApplicationFailure | Temporal TypeScript SDK API Reference
In Workflows, if you throw a non-ApplicationFailure, the Workflow Task will fail and be retried. If you throw an ApplicationFailure, the Workflow Execution will fail.
-
first of all - how is one wf task being retried or failing and not the entire workflow from start ? i didnt know we can retry a piece of wf defintion (i.e. wf task) and not the enture workflow ? even for entire workflow retry we need to provide retry policy during wfClient.start() or wfClient.execute right ? What exactly is being talked about here in terms of retry - can someone explain with an example.
-
also - why throwing non-ApplicationFailure, - will retry the wf task but ApplicationFailure will not ?
I feel like I am missing something here.
then further in this documention - Temporal Failures reference | Temporal Documentation
It says -
Only Workflow errors that are Temporal Failures cause the Workflow Execution to fail; all other errors cause the Workflow Task to fail and be retried
-
this statement is confusing because all errors like ApplicationFailures, ActivityFailures etc - are - basically TemporalFailures since its the main base-class - so any of those thrown from workflow will cause it to fail and not retry ? what does this mean exactly and why its been built this way ? and it sounds wrong because ApplicationFailure can indeed cause retries right ?
-
non TemporalFailure type errors - will make wf task be retried - why this has been built this way - why throw new Error(“non TemporalFailure”) - should make wf task be retried but new TemporalFailure() should not ?
I really need to understand the distinctions here