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

Konstantine Karantasis updated KAFKA-4837:
------------------------------------------
    Description: 
A validation check in Connect's REST API that was added to validate that the 
connector class name in the config matches the connector class name in the 
request's URL is too strict by not considering both the simple and the 
canonical name of the connector class. For instance, the following example 
request: 

{code}
PUT /connector-plugins/FileStreamSinkConnector/config/validate/ HTTP/1.1
Host: connect.example.com
Accept: application/json

{
    "connector.class": "org.apache.kafka.connect.file.FileStreamSinkConnector",
    "tasks.max": "1",
    "topics": "test-topic"
}
{code}

returns a "Bad Request" response with error code "400".

Currently the reasonable workaround is to exactly match the connector class 
name in both places. The following will work: 

{code}
PUT 
/connector-plugins/org.apache.kafka.connect.file.FileStreamSinkConnector/config/validate/
 HTTP/1.1
Host: connect.example.com
Accept: application/json

{
    "connector.class": "org.apache.kafka.connect.file.FileStreamSinkConnector",
    "tasks.max": "1",
    "topics": "test-topic"
}
{code}

However, this is not flexible enough and also breaks several examples in 
documentation. Validation should take into account both simple and canonical 
class names. 

  was:
A validation check in Connect's REST API that was added to validate that the 
connector class name in the config matches the connector class name in the 
request's URL is too strict by not considering both the simple and the 
canonical name of the connector class. For instance, the following example 
request: 

{code}
PUT /connector-plugins/FileStreamSinkConnector/config/validate/ HTTP/1.1
Host: connect.example.com
Accept: application/json

{
    "connector.class": "org.apache.kafka.connect.file.FileStreamSinkConnector",
    "tasks.max": "1",
    "topics": "test-topic"
}
{code}

returns a "Bad Request" response with error code "400".

Currently the reasonable workaround is to exactly match the connector class 
name in both places. The following will work: 

{code}
PUT 
/connector-plugins/"org.apache.kafka.connect.file.FileStreamSinkConnector/config/validate/
 HTTP/1.1
Host: connect.example.com
Accept: application/json

{
    "connector.class": "org.apache.kafka.connect.file.FileStreamSinkConnector",
    "tasks.max": "1",
    "topics": "test-topic"
}
{code}

However, this is not flexible enough and also breaks several examples in 
documentation. Validation should take into account both simple and canonical 
class names. 


> Config validation in Connector plugins need to compare against both canonical 
> and simple class names
> ----------------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-4837
>                 URL: https://issues.apache.org/jira/browse/KAFKA-4837
>             Project: Kafka
>          Issue Type: Bug
>          Components: KafkaConnect
>    Affects Versions: 0.10.2.0
>            Reporter: Konstantine Karantasis
>            Assignee: Konstantine Karantasis
>             Fix For: 0.11.0.0, 0.10.2.1
>
>   Original Estimate: 3h
>  Remaining Estimate: 3h
>
> A validation check in Connect's REST API that was added to validate that the 
> connector class name in the config matches the connector class name in the 
> request's URL is too strict by not considering both the simple and the 
> canonical name of the connector class. For instance, the following example 
> request: 
> {code}
> PUT /connector-plugins/FileStreamSinkConnector/config/validate/ HTTP/1.1
> Host: connect.example.com
> Accept: application/json
> {
>     "connector.class": 
> "org.apache.kafka.connect.file.FileStreamSinkConnector",
>     "tasks.max": "1",
>     "topics": "test-topic"
> }
> {code}
> returns a "Bad Request" response with error code "400".
> Currently the reasonable workaround is to exactly match the connector class 
> name in both places. The following will work: 
> {code}
> PUT 
> /connector-plugins/org.apache.kafka.connect.file.FileStreamSinkConnector/config/validate/
>  HTTP/1.1
> Host: connect.example.com
> Accept: application/json
> {
>     "connector.class": 
> "org.apache.kafka.connect.file.FileStreamSinkConnector",
>     "tasks.max": "1",
>     "topics": "test-topic"
> }
> {code}
> However, this is not flexible enough and also breaks several examples in 
> documentation. Validation should take into account both simple and canonical 
> class names. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to