Anubhav Dhoot commented on YARN-3351:

The issue is the AM tracking link code is sharing the same common codeĀ as the 
NM web app. After YARN-2713 this code returns the first RM in HA case and 
letting is redirect to the active HA. This works in the case of NM as its just 
getting a remote url.
But in the case of AM tracking URL this is used by the caller to bind to the 
address. Hence if in HA if anything other than the first RM is active, we end 
up trying to bind to the other RM address and fail with the error desribed.

> AppMaster tracking URL is broken in HA
> --------------------------------------
>                 Key: YARN-3351
>                 URL: https://issues.apache.org/jira/browse/YARN-3351
>             Project: Hadoop YARN
>          Issue Type: Bug
>          Components: webapp
>            Reporter: Anubhav Dhoot
>            Assignee: Anubhav Dhoot
> After YARN-2713, the AppMaster link is broken in HA.  To repro 
> a) setup RM HA and ensure the first RM is not active,
> b) run a long sleep job and view the tracking url on the RM applications page
> The log and full stack trace is shown below
> {noformat}
> 2015-02-05 20:47:43,478 WARN org.mortbay.log: 
> /proxy/application_1423182188062_0002/: java.net.BindException: Cannot assign 
> requested address
> {noformat}
> {noformat}
> java.net.BindException: Cannot assign requested address
>       at java.net.PlainSocketImpl.socketBind(Native Method)
>       at 
> java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
>       at java.net.Socket.bind(Socket.java:631)
>       at java.net.Socket.<init>(Socket.java:423)
>       at java.net.Socket.<init>(Socket.java:280)
>       at 
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)
>       at 
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
>       at 
> org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
>       at 
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
>       at 
> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
>       at 
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
>       at 
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
>       at 
> org.apache.hadoop.yarn.server.webproxy.WebAppProxyServlet.proxyLink(WebAppProxyServlet.java:188)
>       at 
> org.apache.hadoop.yarn.server.webproxy.WebAppProxyServlet.doGet(WebAppProxyServlet.java:345)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
>       at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
>       at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
> {noformat}

This message was sent by Atlassian JIRA

Reply via email to