Add new deferred_ttl job attribute and cleanup for deferred jobs #1685
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.
Currently there is no cleanup for deferred jobs in the DeferredJobRegistry. The only way for jobs to leave the DeferredJobRegistry is if the jobs' dependencies succeed. If dependencies fail or never execute, then deferred jobs are not cleaned up.
In my use case, we saw that our DeferredJobRegistry was getting too large, hitting our Redis instance limits. Our workaround so far for this was to make a periodic job that clears the DeferredJobRegistry.
This PR simplifies this process by adding an optional
deferred_ttl
attribute to deferred jobs. By default, the value for this is+inf
(the current behavior, so existing workflows aren't affected).deferred_ttl
in effect is a time limit for deferred jobs before they stop waiting and are considered failed, cleaned up by the DeferredJobRegistry.