You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Randall Hauch (Jira)" <ji...@apache.org> on 2020/12/07 17:09:00 UTC

[jira] [Created] (KAFKA-10816) Connect REST API should have a resource that can be used as a readiness probe

Randall Hauch created KAFKA-10816:
-------------------------------------

             Summary: Connect REST API should have a resource that can be used as a readiness probe
                 Key: KAFKA-10816
                 URL: https://issues.apache.org/jira/browse/KAFKA-10816
             Project: Kafka
          Issue Type: Improvement
          Components: KafkaConnect
            Reporter: Randall Hauch


There are a few ways to accurately detect whether a Connect worker is *completely* ready to process all REST requests:

# Wait for `Herder started` in the Connect worker logs
# Use the REST API to issue a request that will be completed only after the herder has started, such as `GET /connectors/{name}/` or `GET /connectors/{name}/status`.

Other techniques can be used to detect other startup states, though none of these will guarantee that the worker has indeed completely started up and can process all REST requests:

* `GET /` can be used to know when the REST server has started, but this may be before the worker has started completely and successfully.
* `GET /connectors` can be used to know when the REST server has started, but this may be before the worker has started completely and successfully. And, for the distributed Connect worker, this may actually return an older list of connectors if the worker hasn't yet completely read through the internal config topic. It's also possible that this request returns even if the worker is having trouble reading from the internal config topic.
* `GET /connector-plugins` can be used to know when the REST server has started, but this may be before the worker has started completely and successfully.

The Connect REST API should have an endpoint that more obviously and more simply can be used as a readiness probe. This could be a new resource (e.g., `GET /status`), though this would only work on newer Connect runtimes, and existing tooling, installations, and examples would have to be modified to take advantage of this feature (if it exists). 

Alternatively, we could make sure that the existing resources (e.g., `GET /` or `GET /connectors`) wait for the herder to start completely; this wouldn't require a KIP and it would not require clients use different technique for newer and older Connect runtimes. (Whether or not we back port this is another question altogether, since it's debatable whether the behavior of the existing REST resources is truly a bug.)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)