Feature | Use native Laravel retry logic when possible #100
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Laravel typically stores failed jobs in a dedicated table when using the database driver. You can retry these jobs using an Artisan command. This command ensures that the jobs are re-added to the queue and removed from the table for failed jobs.
In Vulture, this job retry logic is currently not utilized. When you call the retry method of a WorkflowJob instance, a new job is created and sent to the Laravel queue. If a job fails multiple times and is retried, the table for failed jobs can quickly accumulate multiple instances of the same job.
This PR proposes utilizing Laravel's default job retry logic whenever possible. While the proposed implementation works, it is not particularly nice. In particular, the database query may not scale efficiently. This PR serves as a proof of concept. If accepted, I'm willing to enhance it (such as by adding Laravel job UUIDs to WorkflowJob instances upon dispatching).