[ 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