[
https://issues.apache.org/jira/browse/KAFKA-8304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Randall Hauch resolved KAFKA-8304.
----------------------------------
Resolution: Fixed
Merged onto `trunk`, and backported to `2.2`, `2.1`, and `2.0`.
> Connect susceptible to deadlock while registering REST extensions
> -----------------------------------------------------------------
>
> Key: KAFKA-8304
> URL: https://issues.apache.org/jira/browse/KAFKA-8304
> Project: Kafka
> Issue Type: Bug
> Components: KafkaConnect
> Affects Versions: 2.2.0, 2.1.1, 2.0.2, 2.3.0, 2.1.2, 2.2.1
> Reporter: Chris Egerton
> Assignee: Chris Egerton
> Priority: Blocker
> Fix For: 2.0.2, 2.3.0, 2.1.2, 2.2.1
>
>
> 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(...)}}.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)