At the moment, most individual jobs in ODR's background job commands can technically catch an exception, delete the job, and not update the related TrackedJob entity. By extension, this means that the TrackedJob never gets marked as complete...multistage jobs like CSVExport freeze, and other types of jobs like MassEdit hang around and block all future jobs on that datatype, etc.
Additionally, the web interface has no method to get rid of these stalled jobs...in theory I might be able to have the Active Jobs page check the status of the beanstalk queue to determine if it's actually stalled or not.
Additionally, the only cURL error the background jobs do treat as a "retry" at the moment is "CURLE_COULDNT_RESOLVE_HOST (6)". At absolute minimum they should also "retry" on timeouts, and probably on more than that (https://curl.se/libcurl/c/libcurl-errors.html)
At the moment, most individual jobs in ODR's background job commands can technically catch an exception, delete the job, and not update the related TrackedJob entity. By extension, this means that the TrackedJob never gets marked as complete...multistage jobs like CSVExport freeze, and other types of jobs like MassEdit hang around and block all future jobs on that datatype, etc.
Additionally, the web interface has no method to get rid of these stalled jobs...in theory I might be able to have the Active Jobs page check the status of the beanstalk queue to determine if it's actually stalled or not.
Additionally, the only cURL error the background jobs do treat as a "retry" at the moment is "CURLE_COULDNT_RESOLVE_HOST (6)". At absolute minimum they should also "retry" on timeouts, and probably on more than that (https://curl.se/libcurl/c/libcurl-errors.html)