[
https://issues.apache.org/jira/browse/HADOOP-4659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12648734#action_12648734
]
Hairong Kuang commented on HADOOP-4659:
---------------------------------------
On the second thought, throwing IOException from setupIOstreams is not a
complete solution. While one RPC is in the middle of setupIOstreams, there
might be a different call that uses the same connection and is about to
setupIOstreams. If the first setup gets a ConnectException, the second call
will end up seeing a closed connection and ConnectException gets delivered to
call in call.error. This means that ConnectException will be wrapped.
I am thinking to solve the problem using my initial solution: check root cause
in waitForProxy.
As for testing, I like Steve's idea. How about adding an API wait for proxy
with a timeout to RPC. The current API waitForProxy could use a timeout with
the max long value.
> Root cause of connection failure is being lost to code that uses it for
> delaying startup
> ----------------------------------------------------------------------------------------
>
> Key: HADOOP-4659
> URL: https://issues.apache.org/jira/browse/HADOOP-4659
> Project: Hadoop Core
> Issue Type: Bug
> Components: ipc
> Affects Versions: 0.18.3
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Blocker
> Fix For: 0.18.3
>
> Attachments: connectRetry.patch, hadoop-4659.patch
>
>
> ipc.Client the root cause of a connection failure is being lost as the
> exception is wrapped, hence the outside code, the one that looks for that
> root cause, isn't working as expected. The results is you can't bring up a
> task tracker before job tracker, and probably the same for a datanode before
> a namenode. The change that triggered this is not yet located, I had thought
> it was HADOOP-3844 but I no longer believe this is the case.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.