The HadoopScheduledThreadPoolExecutor (introduced in
HADOOP-12749) is broken for the scheduling of periodic tasks (i.e. for tasks submitted with scheduleAtFixedRate and scheduleAfterFixedDelay).
The behavior of the executor with these methods is that the underlying task is executed once, and then blocks the running thread indefinitely in ExecutorHelper::logThrowableFromAfterExecute, meaning further executions of the task won't run, and will also block the running thread from running any other tasks.
A quick scan of the source has shown me that these methods are used on HadoopScheduledThreadPoolExecutor instances in several places in the code base, at least in JobHistory and CleanerService, which appears to mean that these classes also no longer function correctly.