I would like to propose an addition to the ActiveJob retry_on API to allow the attempts argument to be the symbol ‘:unlimited’ in addition to the specific number of retry attempts that it allows today.
The code change required would be minimal, likely only requiring changing the test in activejob/exceptions.rb to see whether a retry should be called to if attempts == :unlimited || executions < attempts.
It seems this would be most valuable when dealing with infrastructure issues that are expected to recover and the alternative would be taking manual intervention to re-enqueue the job once the issue is fixed. Presently, you could just choose an arbitrarily high number of allowed attempts but that seems somewhat artificial and inexpressive.