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/03/06 23:59:00 UTC

[jira] [Created] (KAFKA-8058) ConnectRestExtensionContext does not return list of connectors from its ConnectClusterState

Chris Egerton created KAFKA-8058:
------------------------------------

             Summary: ConnectRestExtensionContext does not return list of connectors from its ConnectClusterState
                 Key: KAFKA-8058
                 URL: https://issues.apache.org/jira/browse/KAFKA-8058
             Project: Kafka
          Issue Type: Bug
          Components: KafkaConnect
    Affects Versions: 2.1.1, 2.1.0, 2.0.1, 2.0.0
            Reporter: Chris Egerton
            Assignee: Chris Egerton


Title is not entirely accurate, but describes the most common way this bug presents itself.

The [ConnectClusterStateImpl|https://github.com/apache/kafka/blob/ab00c51b6362b41071ae32611ebf698ba9c221ee/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImpl.java] used by Kafka Connect to provide cluster information to REST extensions makes an asynchronous call to [Herder.connectors(...)|https://github.com/apache/kafka/blob/ab00c51b6362b41071ae32611ebf698ba9c221ee/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/Herder.java#L70] in its  [connectors()|https://github.com/apache/kafka/blob/ab00c51b6362b41071ae32611ebf698ba9c221ee/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/health/ConnectClusterStateImpl.java#L46] method that populates a list of connector names, then immediately returns that list of connector names. If the list is read soon after it is returned, it's possible it will be empty or at least not completely populated.

Since the method is implicitly synchronous (no callback logic is involved in its parameters or return values, and there is no documentation indicating asynchronous behavior for the [ConnectClusterState.connectors()|https://github.com/apache/kafka/blob/ab00c51b6362b41071ae32611ebf698ba9c221ee/connect/api/src/main/java/org/apache/kafka/connect/health/ConnectClusterState.java#L28-L34] method), this should be remedied by adding a wait for the Herder.connectors(...) method to complete in the ConnectClusterStateImpl.connectors() method.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)