For running jobs, we agreed there is a need for some kind of timeout anyway, universally. It gets enforced by
- Processor Server model: the calling Processing Server (currently with a dummy number of pages of 200) or client CLI
- Processing Worker model: the worker instance (around
invoke_processor()) or the processor itself (inside process())
Whoever witnessed a timeout must then either resubmit or roll back upstream, i.e. push back on the queue.
To calculate the number of pages in advance, see #1063
Originally posted by @bertsky in #1069 (comment)