Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove explicit notion of recovery #743

Merged
merged 10 commits into from
Feb 4, 2025
Merged

remove explicit notion of recovery #743

merged 10 commits into from
Feb 4, 2025

Conversation

maxdml
Copy link
Contributor

@maxdml maxdml commented Feb 3, 2025

This PR simplifies the logic for putting a workflow in the dead letter queue. Specifically, it changes the meaning of the recovery_attempt column in the dbos.workflow_status table to attempts*.

The default of the column is now 1.

Callers of init_workflow_status do not need to specify whether the workflow is being recovered. init_workflow_status just verifies that (number of attempts) <= max_retries before placing a workflow in the DLQ.

[*] This PR does not change the column name, to facilitate backward compatibility.

Comment on lines 96 to 99
for (let i = 0; i < LocalRecovery.maxRecoveryAttempts * 2; i++) {
await testRuntime.startWorkflow(LocalRecovery, handle.getWorkflowUUID()).deadLetterWorkflow();
expect(LocalRecovery.recoveryCount).toBe(i + LocalRecovery.maxRecoveryAttempts + 1);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This path does not make sense anymore (you can't call a workflow in "non recovery mode")

@maxdml maxdml marked this pull request as ready for review February 3, 2025 23:19
for (let i = 0; i < 10; i++) {
await testRuntime.startWorkflow(DBOSTestClass, handle.getWorkflowUUID()).noopWorkflow();
const result = await systemDBClient.query<{status: string, attempts: number}>(`SELECT status, recovery_attempts as attempts FROM dbos.workflow_status WHERE workflow_uuid=$1`, [handle.getWorkflowUUID()]);
expect(result.rows[0].attempts).toBe(String(i + 2));
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+2 because:

  • +1 for the first call to startWorkflow above
  • +1 because i starts at 0

@maxdml maxdml merged commit ba2e77b into main Feb 4, 2025
6 checks passed
@maxdml maxdml deleted the attempts branch February 4, 2025 21:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants