Continue-As-New - TypeScript SDK
Continue-As-New enables a Workflow Execution to close successfully and create a new Workflow Execution in a single atomic operation if the number of Events in the Event History is becoming too large. The Workflow Execution spawned from the use of Continue-As-New has the same Workflow Id, a new Run Id, and a fresh Event History and is passed all the appropriate parameters.
To cause a Workflow Execution to Continue-As-New, the Workflow function should return the result of the continueAsNew
.
continue-as-new/src/workflows.ts
import { continueAsNew, log, sleep } from '@temporalio/workflow';
export async function loopingWorkflow(iteration = 0): Promise<void> {
if (iteration === 10) {
return;
}
log.info('Running Workflow iteration', { iteration });
await sleep(1000);
// Must match the arguments expected by `loopingWorkflow`
await continueAsNew<typeof loopingWorkflow>(iteration + 1);
// Unreachable code, continueAsNew is like `process.exit` and will stop execution once called.
}
Using Continue-as-New and Updates
- Temporal does not support Continue-as-New functionality within Update handlers.
- Complete all handlers before using Continue-as-New.
- Use Continue-as-New from your main Workflow Definition method, just as you would complete or fail a Workflow Execution.