[
https://issues.apache.org/jira/browse/KAFKA-13327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Chris Egerton resolved KAFKA-13327.
-----------------------------------
Fix Version/s: 3.7.0
Resolution: Fixed
> Preflight validations of connectors leads to 500 responses
> ----------------------------------------------------------
>
> Key: KAFKA-13327
> URL: https://issues.apache.org/jira/browse/KAFKA-13327
> Project: Kafka
> Issue Type: Bug
> Components: KafkaConnect
> Reporter: Chris Egerton
> Assignee: Chris Egerton
> Priority: Major
> Fix For: 3.7.0
>
>
> The Connect framework performs some preflight validations for all connectors
> that are created in addition to allowing connectors to define their own
> custom validation logic by providing a {{ConfigDef}} object in
> [Connector::config|https://kafka.apache.org/30/javadoc/org/apache/kafka/connect/connector/Connector.html#config()]
> and performing multi-property validation in
> [Connector::validate|https://kafka.apache.org/30/javadoc/org/apache/kafka/connect/connector/Connector.html#validate(java.util.Map)].
> When performed correctly, this validation information is surfaced to the user
> in the form of a
> [ConfigInfos|https://github.com/apache/kafka/blob/4eb386f6e060e12e1940c0d780987e3a7c438d74/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/entities/ConfigInfos.java]
> object containing a list of [config
> objects|https://github.com/apache/kafka/blob/4eb386f6e060e12e1940c0d780987e3a7c438d74/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/entities/ConfigInfo.java#L42-L45]
> whose
> [values|https://github.com/apache/kafka/blob/4eb386f6e060e12e1940c0d780987e3a7c438d74/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/entities/ConfigInfo.java#L42-L45]
> contain one or more [error
> messages|https://github.com/apache/kafka/blob/4eb386f6e060e12e1940c0d780987e3a7c438d74/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/rest/entities/ConfigValueInfo.java#L61-L64].
> This can be used as the response for a REST request to PUT
> /connector-plugins/\{connectorType}/config/validate and allows programmatic
> UIs to render error messages for every invalid property to the user.
> However, some validations performed by the Connect framework do not follow
> this pattern and instead result in a 500 response being returned to the user.
> For example, logic specific to sink connectors (see
> [AbstractHerder|https://github.com/apache/kafka/blob/4eb386f6e060e12e1940c0d780987e3a7c438d74/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/AbstractHerder.java#L436]
> and
> [SinkConnectorConfig|https://github.com/apache/kafka/blob/4eb386f6e060e12e1940c0d780987e3a7c438d74/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/SinkConnectorConfig.java#L88-L125])
> simply throws an exception instead of documenting the error with the
> offending property and returning it in a standard response.
>
> We should correct this logic wherever possible so that configurations that
> are not fatally invalid (i.e., may have invalid properties but can still be
> translated into a meaningful {{ConfigInfos}} response object) do not cause a
> 500 response to be returned to the user.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)