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

Luke Chen updated KAFKA-14295:
------------------------------
    Fix Version/s: 3.4.1

> FetchMessageConversionsPerSec meter not recorded
> ------------------------------------------------
>
>                 Key: KAFKA-14295
>                 URL: https://issues.apache.org/jira/browse/KAFKA-14295
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: David Mao
>            Assignee: Chia-Ping Tsai
>            Priority: Major
>             Fix For: 3.5.0, 3.4.1
>
>
> The broker topic metric FetchMessageConversionsPerSec doesn't get recorded on 
> a fetch message conversion.
> The bug is that we pass in a callback that expects a MultiRecordsSend in 
> KafkaApis:
> {code:java}
> def updateConversionStats(send: Send): Unit = {
>   send match {
>     case send: MultiRecordsSend if send.recordConversionStats != null =>
>       send.recordConversionStats.asScala.toMap.foreach {
>         case (tp, stats) => updateRecordConversionStats(request, tp, stats)
>       }
>     case _ =>
>   }
> } {code}
> But we call this callback with a NetworkSend in the SocketServer:
> {code:java}
> selector.completedSends.forEach { send =>
>   try {
>     val response = inflightResponses.remove(send.destinationId).getOrElse {
>       throw new IllegalStateException(s"Send for ${send.destinationId} 
> completed, but not in `inflightResponses`")
>     }
>     updateRequestMetrics(response)
>     // Invoke send completion callback
>     response.onComplete.foreach(onComplete => onComplete(send))
> ...{code}
> Note that Selector.completedSends returns a collection of NetworkSend



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

Reply via email to