The CoordinatorExecutorThreadFactory of the SourceCoordinator checks that only a single thread is active and that no new thread can be created if the previous one failed.
Neither of these guards work properly. If a runnable in the ThreadPoolExecutor fails then it actually uses the worker thread of the failed runnable to spawn a new worker. This means that at the time the second thread is created the previous thread is still alive, and the exception that caused the failure hasn't even been propagated to the threads exception handler.
As these guards do not work, and to boot result in the actual failure causes being hidden (like in
FLINK-24855), we should remove them.