[ 
https://issues.apache.org/jira/browse/HADOOP-10278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13896168#comment-13896168
 ] 

Hiroshi Ikeda commented on HADOOP-10278:
----------------------------------------

{code}
@@ -1873,7 +1913,7 @@ private void processRpcRequest(RpcRequestHeaderProto 
header,
       Call call = new Call(header.getCallId(), header.getRetryCount(),
           rpcRequest, this, ProtoUtil.convert(header.getRpcKind()), header
               .getClientId().toByteArray());
-      callQueue.put(call);              // queue the call; maybe blocked here
+      callQueue.get().put(call);              // queue the call; maybe blocked 
here
       incRpcCount();  // Increment the rpc count
     }
{code}

It may be rare but it is logically possible that the queue gotten from 
callQueue may be already replaced and drained when invoking put().

> Refactor to make CallQueue pluggable
> ------------------------------------
>
>                 Key: HADOOP-10278
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10278
>             Project: Hadoop Common
>          Issue Type: Sub-task
>          Components: ipc
>            Reporter: Chris Li
>         Attachments: HADOOP-10278-atomicref.patch, 
> HADOOP-10278-atomicref.patch, HADOOP-10278-atomicref.patch, HADOOP-10278.patch
>
>
> * Refactor CallQueue into an interface, base, and default implementation that 
> matches today's behavior
> * Make the call queue impl configurable, keyed on port so that we minimize 
> coupling



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to