[ 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)