You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "David Arthur (Jira)" <ji...@apache.org> on 2021/08/04 18:07:00 UTC

[jira] [Created] (KAFKA-13166) EOFException when Controller handles unknown API

David Arthur created KAFKA-13166:
------------------------------------

             Summary: EOFException when Controller handles unknown API
                 Key: KAFKA-13166
                 URL: https://issues.apache.org/jira/browse/KAFKA-13166
             Project: Kafka
          Issue Type: Bug
            Reporter: David Arthur
            Assignee: David Arthur


When ControllerApis handles an unsupported RPC, it silently drops the request due to an unhandled exception. 

The following stack trace was manually printed since this exception was suppressed on the controller. 
{code}
java.util.NoSuchElementException: key not found: UpdateFeatures
	at scala.collection.MapOps.default(Map.scala:274)
	at scala.collection.MapOps.default$(Map.scala:273)
	at scala.collection.AbstractMap.default(Map.scala:405)
	at scala.collection.mutable.HashMap.apply(HashMap.scala:425)
	at kafka.network.RequestChannel$Metrics.apply(RequestChannel.scala:74)
	at kafka.network.RequestChannel.$anonfun$updateErrorMetrics$1(RequestChannel.scala:458)
	at kafka.network.RequestChannel.$anonfun$updateErrorMetrics$1$adapted(RequestChannel.scala:457)
	at kafka.utils.Implicits$MapExtensionMethods$.$anonfun$forKeyValue$1(Implicits.scala:62)
	at scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry(JavaCollectionWrappers.scala:359)
	at scala.collection.convert.JavaCollectionWrappers$JMapWrapperLike.foreachEntry$(JavaCollectionWrappers.scala:355)
	at scala.collection.convert.JavaCollectionWrappers$AbstractJMapWrapper.foreachEntry(JavaCollectionWrappers.scala:309)
	at kafka.network.RequestChannel.updateErrorMetrics(RequestChannel.scala:457)
	at kafka.network.RequestChannel.sendResponse(RequestChannel.scala:388)
	at kafka.server.RequestHandlerHelper.sendErrorOrCloseConnection(RequestHandlerHelper.scala:93)
	at kafka.server.RequestHandlerHelper.sendErrorResponseMaybeThrottle(RequestHandlerHelper.scala:121)
	at kafka.server.RequestHandlerHelper.handleError(RequestHandlerHelper.scala:78)
	at kafka.server.ControllerApis.handle(ControllerApis.scala:116)
	at kafka.server.ControllerApis.$anonfun$handleEnvelopeRequest$1(ControllerApis.scala:125)
	at kafka.server.ControllerApis.$anonfun$handleEnvelopeRequest$1$adapted(ControllerApis.scala:125)
	at kafka.server.EnvelopeUtils$.handleEnvelopeRequest(EnvelopeUtils.scala:65)
	at kafka.server.ControllerApis.handleEnvelopeRequest(ControllerApis.scala:125)
	at kafka.server.ControllerApis.handle(ControllerApis.scala:103)
	at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:75)
	at java.lang.Thread.run(Thread.java:748)
{code}

This is due to a bug in the metrics code in RequestChannel.

The result is that the request fails, but no indication is given that it was due to an unsupported API on either the broker, controller, or client.




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