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

Ankur commented on HADOOP-2909:
-------------------------------

> 1. Add data structures to the IPC server ...
I think one very simple way of doing this would be to add a 'pendingRequests'  
field to the Connection class that keeps the count of pending requests. However 
if one needs to see the details of pending requests for a connection then 
making 'pendingRequests' as a list that contains all the unprocessed calls 
might be more suitable but slightly redundant as the unprocessed calls are 
already queued in the server 'callQueue'.

> 2. IPC server does not close a connection ...
> 3. The default client-side ...
> 4. The server-side max ...
This can be taken care of in Connection.timedOut() by checking the connection's 
responseQueue/pendingRequests count. However we need to be able to 
differentiate between server slowdown, client slowdown and client crashes. 
Setting a higher idle time for the client  and even higher idle time for the 
server seems to be the right choice.

> Improve IPC idle connection management
> --------------------------------------
>
>                 Key: HADOOP-2909
>                 URL: https://issues.apache.org/jira/browse/HADOOP-2909
>             Project: Hadoop Core
>          Issue Type: Bug
>          Components: ipc
>    Affects Versions: 0.16.0
>            Reporter: Hairong Kuang
>
> IPC server determines if a connection is idle or not by checking if the 
> connection does not have any IO activity for a predefined max idle time. An 
> idle connection will be closed even if the connection still has outstanding 
> requests or replies. This causes RPC failures when a server becomes slow or 
> if a request takes a long time to be served. In jira, I'd like to propose the 
> following changes to IPC idle management:
> 1. Add data structures to the IPC server that keep track of outstanding 
> requests.
> 2. IPC server does not close a connection that has outstanding 
> requests/replies even when it has no IO activities for a while.
> 3. The default client-side max idle time should be in several minutes not 1 
> second. 
> 4. The server-side max idle time should be greater than the client-side max 
> idle time, for example, twice of the client-side max idle time. So server 
> mainly deals with clients that are crashed without closing 
> its connections. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to