You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Chris Egerton (JIRA)" <ji...@apache.org> on 2019/04/29 17:19:00 UTC

[jira] [Created] (KAFKA-8304) Connect susceptible to deadlock while registering REST extensions

Chris Egerton created KAFKA-8304:
------------------------------------

             Summary: 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.1.1, 2.2.0, 2.0.2, 2.3.0, 2.1.2, 2.2.1
            Reporter: Chris Egerton
            Assignee: Chris Egerton


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)