[
https://issues.apache.org/jira/browse/MAPREDUCE-5616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13817567#comment-13817567
]
Chris Nauroth commented on MAPREDUCE-5616:
------------------------------------------
The existing config override is sufficient for "connection refused" errors. It
doesn't cover "connection timeout" errors, which is configured separately in
the base RPC client code.
After the AM exits, we would expect connection attempts to cause an immediate
connection refused error, not a longer connection timeout error. After all,
the packets can get to their destination. There's just no server listening
anymore. The reason I saw connection timeouts was a side effect of a feature
of Windows Firewall called Stealth Mode. This feature is on by default, and it
intentionally drops outbound TCP RST packets for connections initiated against
a port with no server listening.
http://technet.microsoft.com/en-us/library/dd448557%28WS.10%29
Without getting the RST, the client doesn't know that a connection has been
refused, and so it just has to wait for the longer timeout condition. It's
possible to disable stealth mode by setting a registry key and restarting the
firewall:
http://msdn.microsoft.com/en-us/library/ff720058.aspx
That article might be out of date though, because I found that this registry
key was really at
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\PublicProfile
in my environments.
My only known repro right now is on Windows. I'm leaving this information here
for anyone who might notice similar problems on other RPC interactions. I'd
still like to get a configuration patch into the client for this.
> MR Client-AppMaster RPC max retries on socket timeout is too high.
> ------------------------------------------------------------------
>
> Key: MAPREDUCE-5616
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-5616
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Components: client
> Affects Versions: 3.0.0, 2.2.0
> Reporter: Chris Nauroth
> Assignee: Chris Nauroth
>
> MAPREDUCE-3811 introduced a separate config key for overriding the max
> retries applied to RPC connections from the MapReduce Client to the MapReduce
> Application Master. This was done to make failover from the AM to the
> MapReduce History Server faster in the event that the AM completes while the
> client thinks it's still running. However, the RPC client uses a separate
> setting for socket timeouts, and this one is not overridden. The default for
> this is 45 retries with a 20-second timeout on each retry. This means that
> in environments subject to connection timeout instead of connection refused,
> the client waits 15 minutes for failover.
--
This message was sent by Atlassian JIRA
(v6.1#6144)