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

Robert Joseph Evans commented on HADOOP-7086:
---------------------------------------------

I am not an expert on the IPC code, but the change looks fairly simple and very 
reasonable.  I know I have been bitten by the 45 retries several times, and it 
is painful to wait that long in an automated test before it finally fails.  Why 
is the timeout determined by the server and not the client? At least that is 
what I am gleaning from the code, like I said I am not an expert on this so I 
could be wrong about this.  Also this looks like we are changing the protocol 
between the client and the server.  Do we have to mark this as an incompatible 
change, and bump the protocol version number?
                
> Retrying socket connection failure times can be made as configurable
> --------------------------------------------------------------------
>
>                 Key: HADOOP-7086
>                 URL: https://issues.apache.org/jira/browse/HADOOP-7086
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: conf
>         Environment: NA
>            Reporter: Devaraj K
>            Assignee: Devaraj K
>            Priority: Minor
>             Fix For: 0.24.0
>
>         Attachments: HADOOP-7086-1.patch, HADOOP-7086.patch, common-3899.patch
>
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> Retrying socket connection failure times are hard coded as 45 and it is 
> giving the retryring message for 45 times as below. 
> 2011-01-04 15:14:30,700 INFO ipc.Client 
> (Client.java:handleConnectionFailure(487)) - Retrying connect to server: 
> /10.18.52.124:50020. Already tried 1 time(s).
> This can be made as configurable and also we can keep the default value as 
> 45. If the user wants to decrease/increase,  they can add this configurable 
> property otherwise it can continue with the default value.
> common\src\java\org\apache\hadoop\ipc\Client.java:
> -----------------------------------------------------------------------
> private synchronized void setupConnection() throws IOException {
>       short ioFailures = 0;
>       short timeoutFailures = 0;
>       while (true) {
>         try {
>           this.socket = socketFactory.createSocket();
>           this.socket.setTcpNoDelay(tcpNoDelay);
>           // connection time out is 20s
>           NetUtils.connect(this.socket, remoteId.getAddress(), 20000);
>           if (rpcTimeout > 0) {
>             pingInterval = rpcTimeout;  // rpcTimeout overwrites pingInterval
>           }
>           this.socket.setSoTimeout(pingInterval);
>           return;
>         } catch (SocketTimeoutException toe) {
>           /*
>            * The max number of retries is 45, which amounts to 20s*45 = 15
>            * minutes retries.
>            */
>           handleConnectionFailure(timeoutFailures++, 45, toe);
>         } catch (IOException ie) {
>           handleConnectionFailure(ioFailures++, maxRetries, ie);
>         }
>       }
>     }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to