[ 
https://issues.apache.org/jira/browse/KAFKA-14455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yash Mayya updated KAFKA-14455:
-------------------------------
    Fix Version/s: 3.5.0
                   3.4.1
                   3.3.3

> Kafka Connect create and update REST APIs should surface failures while 
> writing to the config topic
> ---------------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-14455
>                 URL: https://issues.apache.org/jira/browse/KAFKA-14455
>             Project: Kafka
>          Issue Type: Bug
>          Components: KafkaConnect
>            Reporter: Yash Mayya
>            Assignee: Yash Mayya
>            Priority: Major
>             Fix For: 3.5.0, 3.4.1, 3.3.3
>
>
> Kafka Connect's `POST /connectors` and `PUT /connectors/\{connector}/config` 
> REST APIs internally simply write a message to the Connect cluster's internal 
> config topic (which is then processed asynchronously by the herder). However, 
> no callback is passed to the producer's send method and there is no error 
> handling in place for producer send failures (see 
> [here|https://github.com/apache/kafka/blob/c1a54671e8fc6c7daec5f5ec3d8c934be96b4989/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java#L716]
>  / 
> [here|https://github.com/apache/kafka/blob/c1a54671e8fc6c7daec5f5ec3d8c934be96b4989/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java#L726]).
> Consider one such case where the Connect worker's principal doesn't have a 
> WRITE ACL on the cluster's config topic. Now suppose the user submits a 
> connector's configs via one of the above two APIs. The producer send 
> [here|https://github.com/apache/kafka/blob/c1a54671e8fc6c7daec5f5ec3d8c934be96b4989/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java#L716]
>  / 
> [here|https://github.com/apache/kafka/blob/c1a54671e8fc6c7daec5f5ec3d8c934be96b4989/connect/runtime/src/main/java/org/apache/kafka/connect/storage/KafkaConfigBackingStore.java#L726]
>  won't succeed (due to a TopicAuthorizationException) but the API responses 
> will be `201 Created` success responses anyway. This is a very poor UX 
> because the connector will actually never be created but the API response 
> indicated success. Furthermore, this failure would only be detectable if 
> TRACE logs are enabled (via [this 
> log)|https://github.com/apache/kafka/blob/df29b17fc40f7c15460988d58bc652c3d66b60f8/clients/src/main/java/org/apache/kafka/clients/producer/internals/ProducerBatch.java]
>  making it near impossible for users to debug. Producer callbacks should be 
> used to surface write failures back to the user via the API response.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to