#how to check if all actions launched with run after are done

3 messages · Page 1 of 1 (latest)

red pelican
#

if i launch 100 actions in a for loop, how do i check when and if all of them are done

blazing ironBOT
#

Hi @red pelican. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:

#

In Convex, every scheduled function is reflected as a document in the _scheduled_functions system table. The runAfter() function returns the id of the scheduled function. You can use this id to check the status of the scheduled function.

Here is an example of how you can retrieve the status of a scheduled function:

const status = await ctx.db.system.get(job);
if (!status) {
	throw new Error(`Job ${job} not found`);
}
switch (status.state.kind) {
	case "pending":
	case "inProgress":
		// The function is still running
		break;
	case "failed":
		// The function failed
		break;
	case "success":
		// The function completed successfully
		break;
	case "canceled":
	  // The function was canceled
		break;
}

In your case, if you launch 100 actions in a for loop, you would need to keep track of all the job ids returned by runAfter(). Then, you can periodically check the status of each job until all of them have either succeeded, failed, or been canceled.

Please note that the results of scheduled functions are available for 7 days after they have completed.

For more information, you can refer to the Convex documentation on retrieving scheduled function status (https://docs.convex.dev/scheduling/scheduled-functions#retrieving-scheduled-function-status) and automatically retrying actions (https://stack.convex.dev/retry-actions#check-job-status).

Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: