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

Travis Bischel updated KAFKA-12701:
-----------------------------------
    Description: 
Authorized result checking relies on topic name to not be null, which, when 
using topic IDs, it is.

Unlike the logic in handleDeleteTopicsRequest, handleMetadataRequest does not 
check zk for the names corresponding to topic IDs if topic IDs are present.

{noformat}
[2021-04-21 05:53:01,463] ERROR [KafkaApi-1] Error when handling request: 
clientId=kgo, correlationId=1, api=METADATA, version=11, 
body=MetadataRequestData(topics=[MetadataRequestTopic(topicId=LmqOoFOASnqQp_4-oJgeKA,
 name=null)], allowAutoTopicCreation=false, 
includeClusterAuthorizedOperations=false, 
includeTopicAuthorizedOperations=false) (kafka.server.RequestHandlerHelper)
java.lang.NullPointerException: name
        at java.base/java.util.Objects.requireNonNull(Unknown Source)
        at 
org.apache.kafka.common.resource.ResourcePattern.<init>(ResourcePattern.java:50)
        at 
kafka.server.AuthHelper.$anonfun$filterByAuthorized$3(AuthHelper.scala:121)
        at scala.collection.Iterator$$anon$9.next(Iterator.scala:575)
        at scala.collection.mutable.Growable.addAll(Growable.scala:62)
        at scala.collection.mutable.Growable.addAll$(Growable.scala:57)
        at scala.collection.mutable.ArrayBuffer.addAll(ArrayBuffer.scala:142)
        at scala.collection.mutable.ArrayBuffer.addAll(ArrayBuffer.scala:42)
        at scala.collection.mutable.ArrayBuffer$.from(ArrayBuffer.scala:258)
        at scala.collection.mutable.ArrayBuffer$.from(ArrayBuffer.scala:247)
        at scala.collection.SeqFactory$Delegate.from(Factory.scala:306)
        at scala.collection.IterableOnceOps.toBuffer(IterableOnce.scala:1270)
        at scala.collection.IterableOnceOps.toBuffer$(IterableOnce.scala:1270)
        at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1288)
        at kafka.server.AuthHelper.filterByAuthorized(AuthHelper.scala:120)
        at 
kafka.server.KafkaApis.handleTopicMetadataRequest(KafkaApis.scala:1146)
        at kafka.server.KafkaApis.handle(KafkaApis.scala:170)
        at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
        at java.base/java.lang.Thread.run(Unknown Source)
[2021-04-21 05:53:01,464] ERROR [Kafka Request Handler 1 on Broker 1], 
Exception when handling request (kafka.server.KafkaRequestHandler)
java.lang.NullPointerException
        at 
org.apache.kafka.common.message.MetadataResponseData$MetadataResponseTopic.addSize(MetadataResponseData.java:1247)
        at 
org.apache.kafka.common.message.MetadataResponseData.addSize(MetadataResponseData.java:417)
        at 
org.apache.kafka.common.protocol.SendBuilder.buildSend(SendBuilder.java:218)
        at 
org.apache.kafka.common.protocol.SendBuilder.buildResponseSend(SendBuilder.java:200)
        at 
org.apache.kafka.common.requests.AbstractResponse.toSend(AbstractResponse.java:43)
        at 
org.apache.kafka.common.requests.RequestContext.buildResponseSend(RequestContext.java:111)
        at 
kafka.network.RequestChannel$Request.buildResponseSend(RequestChannel.scala:132)
        at 
kafka.server.RequestHandlerHelper.sendResponse(RequestHandlerHelper.scala:185)
        at 
kafka.server.RequestHandlerHelper.sendErrorOrCloseConnection(RequestHandlerHelper.scala:155)
        at 
kafka.server.RequestHandlerHelper.sendErrorResponseMaybeThrottle(RequestHandlerHelper.scala:109)
        at 
kafka.server.RequestHandlerHelper.handleError(RequestHandlerHelper.scala:79)
        at kafka.server.KafkaApis.handle(KafkaApis.scala:229)
        at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
        at java.base/java.lang.Thread.run(Unknown Source)
{noformat}

  was:
Authorized result checking relies on topic name to not be null, which, when 
using topic IDs, it is.

Unlike the logic in handleDeleteTopicsRequest, hanelMetadataRequest does not 
check zk for the names corresponding to topic IDs if topic IDs are present.

{noformat}
[2021-04-21 05:53:01,463] ERROR [KafkaApi-1] Error when handling request: 
clientId=kgo, correlationId=1, api=METADATA, version=11, 
body=MetadataRequestData(topics=[MetadataRequestTopic(topicId=LmqOoFOASnqQp_4-oJgeKA,
 name=null)], allowAutoTopicCreation=false, 
includeClusterAuthorizedOperations=false, 
includeTopicAuthorizedOperations=false) (kafka.server.RequestHandlerHelper)
java.lang.NullPointerException: name
        at java.base/java.util.Objects.requireNonNull(Unknown Source)
        at 
org.apache.kafka.common.resource.ResourcePattern.<init>(ResourcePattern.java:50)
        at 
kafka.server.AuthHelper.$anonfun$filterByAuthorized$3(AuthHelper.scala:121)
        at scala.collection.Iterator$$anon$9.next(Iterator.scala:575)
        at scala.collection.mutable.Growable.addAll(Growable.scala:62)
        at scala.collection.mutable.Growable.addAll$(Growable.scala:57)
        at scala.collection.mutable.ArrayBuffer.addAll(ArrayBuffer.scala:142)
        at scala.collection.mutable.ArrayBuffer.addAll(ArrayBuffer.scala:42)
        at scala.collection.mutable.ArrayBuffer$.from(ArrayBuffer.scala:258)
        at scala.collection.mutable.ArrayBuffer$.from(ArrayBuffer.scala:247)
        at scala.collection.SeqFactory$Delegate.from(Factory.scala:306)
        at scala.collection.IterableOnceOps.toBuffer(IterableOnce.scala:1270)
        at scala.collection.IterableOnceOps.toBuffer$(IterableOnce.scala:1270)
        at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1288)
        at kafka.server.AuthHelper.filterByAuthorized(AuthHelper.scala:120)
        at 
kafka.server.KafkaApis.handleTopicMetadataRequest(KafkaApis.scala:1146)
        at kafka.server.KafkaApis.handle(KafkaApis.scala:170)
        at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
        at java.base/java.lang.Thread.run(Unknown Source)
[2021-04-21 05:53:01,464] ERROR [Kafka Request Handler 1 on Broker 1], 
Exception when handling request (kafka.server.KafkaRequestHandler)
java.lang.NullPointerException
        at 
org.apache.kafka.common.message.MetadataResponseData$MetadataResponseTopic.addSize(MetadataResponseData.java:1247)
        at 
org.apache.kafka.common.message.MetadataResponseData.addSize(MetadataResponseData.java:417)
        at 
org.apache.kafka.common.protocol.SendBuilder.buildSend(SendBuilder.java:218)
        at 
org.apache.kafka.common.protocol.SendBuilder.buildResponseSend(SendBuilder.java:200)
        at 
org.apache.kafka.common.requests.AbstractResponse.toSend(AbstractResponse.java:43)
        at 
org.apache.kafka.common.requests.RequestContext.buildResponseSend(RequestContext.java:111)
        at 
kafka.network.RequestChannel$Request.buildResponseSend(RequestChannel.scala:132)
        at 
kafka.server.RequestHandlerHelper.sendResponse(RequestHandlerHelper.scala:185)
        at 
kafka.server.RequestHandlerHelper.sendErrorOrCloseConnection(RequestHandlerHelper.scala:155)
        at 
kafka.server.RequestHandlerHelper.sendErrorResponseMaybeThrottle(RequestHandlerHelper.scala:109)
        at 
kafka.server.RequestHandlerHelper.handleError(RequestHandlerHelper.scala:79)
        at kafka.server.KafkaApis.handle(KafkaApis.scala:229)
        at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
        at java.base/java.lang.Thread.run(Unknown Source)
{noformat}


> NPE in MetadataRequest when using topic IDs
> -------------------------------------------
>
>                 Key: KAFKA-12701
>                 URL: https://issues.apache.org/jira/browse/KAFKA-12701
>             Project: Kafka
>          Issue Type: Bug
>    Affects Versions: 2.8.0
>            Reporter: Travis Bischel
>            Assignee: dengziming
>            Priority: Major
>
> Authorized result checking relies on topic name to not be null, which, when 
> using topic IDs, it is.
> Unlike the logic in handleDeleteTopicsRequest, handleMetadataRequest does not 
> check zk for the names corresponding to topic IDs if topic IDs are present.
> {noformat}
> [2021-04-21 05:53:01,463] ERROR [KafkaApi-1] Error when handling request: 
> clientId=kgo, correlationId=1, api=METADATA, version=11, 
> body=MetadataRequestData(topics=[MetadataRequestTopic(topicId=LmqOoFOASnqQp_4-oJgeKA,
>  name=null)], allowAutoTopicCreation=false, 
> includeClusterAuthorizedOperations=false, 
> includeTopicAuthorizedOperations=false) (kafka.server.RequestHandlerHelper)
> java.lang.NullPointerException: name
>       at java.base/java.util.Objects.requireNonNull(Unknown Source)
>       at 
> org.apache.kafka.common.resource.ResourcePattern.<init>(ResourcePattern.java:50)
>       at 
> kafka.server.AuthHelper.$anonfun$filterByAuthorized$3(AuthHelper.scala:121)
>       at scala.collection.Iterator$$anon$9.next(Iterator.scala:575)
>       at scala.collection.mutable.Growable.addAll(Growable.scala:62)
>       at scala.collection.mutable.Growable.addAll$(Growable.scala:57)
>       at scala.collection.mutable.ArrayBuffer.addAll(ArrayBuffer.scala:142)
>       at scala.collection.mutable.ArrayBuffer.addAll(ArrayBuffer.scala:42)
>       at scala.collection.mutable.ArrayBuffer$.from(ArrayBuffer.scala:258)
>       at scala.collection.mutable.ArrayBuffer$.from(ArrayBuffer.scala:247)
>       at scala.collection.SeqFactory$Delegate.from(Factory.scala:306)
>       at scala.collection.IterableOnceOps.toBuffer(IterableOnce.scala:1270)
>       at scala.collection.IterableOnceOps.toBuffer$(IterableOnce.scala:1270)
>       at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1288)
>       at kafka.server.AuthHelper.filterByAuthorized(AuthHelper.scala:120)
>       at 
> kafka.server.KafkaApis.handleTopicMetadataRequest(KafkaApis.scala:1146)
>       at kafka.server.KafkaApis.handle(KafkaApis.scala:170)
>       at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
>       at java.base/java.lang.Thread.run(Unknown Source)
> [2021-04-21 05:53:01,464] ERROR [Kafka Request Handler 1 on Broker 1], 
> Exception when handling request (kafka.server.KafkaRequestHandler)
> java.lang.NullPointerException
>       at 
> org.apache.kafka.common.message.MetadataResponseData$MetadataResponseTopic.addSize(MetadataResponseData.java:1247)
>       at 
> org.apache.kafka.common.message.MetadataResponseData.addSize(MetadataResponseData.java:417)
>       at 
> org.apache.kafka.common.protocol.SendBuilder.buildSend(SendBuilder.java:218)
>       at 
> org.apache.kafka.common.protocol.SendBuilder.buildResponseSend(SendBuilder.java:200)
>       at 
> org.apache.kafka.common.requests.AbstractResponse.toSend(AbstractResponse.java:43)
>       at 
> org.apache.kafka.common.requests.RequestContext.buildResponseSend(RequestContext.java:111)
>       at 
> kafka.network.RequestChannel$Request.buildResponseSend(RequestChannel.scala:132)
>       at 
> kafka.server.RequestHandlerHelper.sendResponse(RequestHandlerHelper.scala:185)
>       at 
> kafka.server.RequestHandlerHelper.sendErrorOrCloseConnection(RequestHandlerHelper.scala:155)
>       at 
> kafka.server.RequestHandlerHelper.sendErrorResponseMaybeThrottle(RequestHandlerHelper.scala:109)
>       at 
> kafka.server.RequestHandlerHelper.handleError(RequestHandlerHelper.scala:79)
>       at kafka.server.KafkaApis.handle(KafkaApis.scala:229)
>       at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:74)
>       at java.base/java.lang.Thread.run(Unknown Source)
> {noformat}



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

Reply via email to