David Mao created KAFKA-14295:
---------------------------------

             Summary: FetchMessageConversionsPerSec meter not recorded
                 Key: KAFKA-14295
                 URL: https://issues.apache.org/jira/browse/KAFKA-14295
             Project: Kafka
          Issue Type: Bug
            Reporter: David Mao


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