You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Xiaobing Fang (Jira)" <ji...@apache.org> on 2023/06/30 10:30:00 UTC

[jira] [Updated] (KAFKA-15136) The inspection of field allowAutoTopicCreation field in MetadataRequest is unreasonable

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

Xiaobing Fang updated KAFKA-15136:
----------------------------------
    Description: 
 
{code:java}
if (!data.allowAutoTopicCreation() && version < 4)
    throw new UnsupportedVersionException("MetadataRequest versions older than 4 don't support the " +
"allowAutoTopicCreation field"); {code}
 

Background:


Based on my understanding, the code in MetadataRequest is intended to ignore the allowAutoTopicCreation field when version≤4. However, if kafka server is configured with "auto.create.topics.enable"=false and the client sets allowAutoTopicCreation=false, UnsupportedVersionExceptionwill be thrown, which is not expected.

 

Issues:
 # `KafkaAdminClient#handleDescribeTopicsByNames()` throws an exception when sending MetadataRequest to a lower version server, making it unusable.
 # MetadataRequestTest avoids this issue by setting `allowAutoTopicCreation=true` in tests for version≤4, but this is not reasonable. And the comments in [testAutoTopicCreation|https://github.com/apache/kafka/blob/1f4cbc5d53259031123b6e9e6bb9a5bbe1e084e8/core/src/test/scala/unit/kafka/server/MetadataRequestTest.scala#L146] may also be problematic.

 

Solution:  
 # Remove the checking code in MetadataRequest.
 # Add a field `hasSetAllowAutoTopicCreation` in MetadataRequest. Only throw an exception when `version≤4` and `hasSetAllowAutoTopicCreation=true`, without considering the value of allowAutoTopicCreation field.

 

If there is indeed an issue, I can work on fixing it. Looking forward to your reply.

  was:
```java

if (!data.allowAutoTopicCreation() && version < 4)
throw new UnsupportedVersionException("MetadataRequest versions older than 4 don't support the " +
"allowAutoTopicCreation field");

```

Background:
Based on my understanding, the code in MetadataRequest is intended to ignore the allowAutoTopicCreation field when version≤4. However, if kafka server is configured with "auto.create.topics.enable"=false and the client sets allowAutoTopicCreation=false, UnsupportedVersionExceptionwill be thrown, which is not expected.

Issues:
 # `KafkaAdminClient#handleDescribeTopicsByNames()` throws an exception when sending MetadataRequest to a lower version server, making it unusable.
 # MetadataRequestTest avoids this issue by setting `allowAutoTopicCreation=true` in tests for version≤4, but this is not reasonable. And the comments in [testAutoTopicCreation|https://github.com/apache/kafka/blob/1f4cbc5d53259031123b6e9e6bb9a5bbe1e084e8/core/src/test/scala/unit/kafka/server/MetadataRequestTest.scala#L146] may also be problematic.

Solution:  
 # Remove the checking code in MetadataRequest.
 # Add a field `hasSetAllowAutoTopicCreation` in MetadataRequest. Only throw an exception when `version≤4` and `hasSetAllowAutoTopicCreation=true`, without considering the value of allowAutoTopicCreation field.

 

If there is indeed an issue, I can work on fixing it. Looking forward to your reply.


> The inspection of field allowAutoTopicCreation field in MetadataRequest is unreasonable
> ---------------------------------------------------------------------------------------
>
>                 Key: KAFKA-15136
>                 URL: https://issues.apache.org/jira/browse/KAFKA-15136
>             Project: Kafka
>          Issue Type: Improvement
>          Components: clients
>            Reporter: Xiaobing Fang
>            Priority: Minor
>
>  
> {code:java}
> if (!data.allowAutoTopicCreation() && version < 4)
>     throw new UnsupportedVersionException("MetadataRequest versions older than 4 don't support the " +
> "allowAutoTopicCreation field"); {code}
>  
> Background:
> Based on my understanding, the code in MetadataRequest is intended to ignore the allowAutoTopicCreation field when version≤4. However, if kafka server is configured with "auto.create.topics.enable"=false and the client sets allowAutoTopicCreation=false, UnsupportedVersionExceptionwill be thrown, which is not expected.
>  
> Issues:
>  # `KafkaAdminClient#handleDescribeTopicsByNames()` throws an exception when sending MetadataRequest to a lower version server, making it unusable.
>  # MetadataRequestTest avoids this issue by setting `allowAutoTopicCreation=true` in tests for version≤4, but this is not reasonable. And the comments in [testAutoTopicCreation|https://github.com/apache/kafka/blob/1f4cbc5d53259031123b6e9e6bb9a5bbe1e084e8/core/src/test/scala/unit/kafka/server/MetadataRequestTest.scala#L146] may also be problematic.
>  
> Solution:  
>  # Remove the checking code in MetadataRequest.
>  # Add a field `hasSetAllowAutoTopicCreation` in MetadataRequest. Only throw an exception when `version≤4` and `hasSetAllowAutoTopicCreation=true`, without considering the value of allowAutoTopicCreation field.
>  
> If there is indeed an issue, I can work on fixing it. Looking forward to your reply.



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