How can I cancel my workflow with status completed if my infinite activity fails or timeout.
Cancelling results in status cancelled. If you want status completed, you return from the workflow function.
try {
await callActivityFoo()
} catch (e) {
// dont throw e, the activity failure
}
return
my infinite activity fails or timeout
Just to add, there is no “infinite” activity execution as you seen since you have to specify at least one timeout (StartToClose and/or ScheduleToClose) timeouts in activity options.
For long-running activities specify a the longest possible StartToCloseTimeout and a short HeartBeatTimeout (your activity must heartbeat periodically within this heartbeat period). This way your activity can execute for a very long time but still be able to fail fast if needed.