[
https://issues.apache.org/jira/browse/KAFKA-5289?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16017111#comment-16017111
]
Ma Tianchi commented on KAFKA-5289:
-----------------------------------
I think the importation thing is not "What kind of exceptions can
`shutdownIdleFetcherThreads()` throw?".It is that
requestChannel.sendResponse(new RequestChannel.Response(request, new
ResponseSend() should be put at the last line.Even though the
shutdownIdleFetcherThreads() throw nothing,but it is very danger. Because if an
error be thrown after send requestChannel.sendResponse,the error will be
caught by KafkaApi and cause StopReplicaRequest.handleError which will send
response again.
> One StopReplicaRequest will caused two Responses
> ------------------------------------------------
>
> Key: KAFKA-5289
> URL: https://issues.apache.org/jira/browse/KAFKA-5289
> Project: Kafka
> Issue Type: Bug
> Components: core
> Affects Versions: 0.10.0.0
> Reporter: xuzq
> Assignee: Ismael Juma
> Priority: Critical
> Fix For: 0.11.0.0
>
> Attachments: handleStopReplicaRequest.png
>
>
> After discussed with my friend markTC,we find a bug.
> One StopReplicaRequest will caused two Responses.
> At core/src/main/scala/kafka/server/KafkaApi.class 175 and 176 lines.
> When an exception caused at
> 'replicaManager.replicaFetcherManager.shutdownIdleFetcherThreads()',
> will also return two responses.
> one is at 175 lines 'requestChannel.sendResponse(new
> RequestChannel.Response(request, new ResponseSend(request.connectionId,
> responseHeader, response)))' and another at 111 lines
> 'requestChannel.sendResponse(new Response(request, new
> ResponseSend(request.connectionId, respHeader, response)))'.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)