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)