The if statements that checks whether the pre_process is not COMPLETED
of DONE doesn't account for when the pre_process has FAILED, so checking
whether the pre_process has failed before rescheduling a new process,
prevents an infinite loop of queued processes.
See #3606