As part of
KAFKA-7503, the ConnectClusterStateImpl class was altered to use a HerderProvider instance instead of a Herder. However, the Connect RestServer registers REST extensions before a herder is given to that HerderProvider, so any extensions that invoke, e.g., ConnectClusterState.connector() in their register(...) method end up in a deadlock that eventually causes Connect startup to fail with the error message "Timed out waiting for herder to be initialized."
If possible, the HerderProvider used for ConnectClusterStateImpl instances given to REST extensions should be supplied with a Herder before those extensions are registered. If that isn't feasible, another option could be to install Connect REST extensions on a separate thread so that they don't block the Connect startup process and eventual call of HerderProvider.setHerder(...).