If an exception occurs during job acquisition (in AcquireJobsCmd) while the millisToWait variable == 0, the exception is logged and the thread continues without waiting.
If the exception is caused by a persistent problem (like an unavailability of a database connection for example), this will cause log flooding.
There should be some special case in the catch block for a situation when millisToWait == 0. Perhaps initializing to jobExecutor.getWaitTimeInMillis() which would alleviate the problem (when combined with the already existing factored wait time increase.
The modified catch block could look like this: