Details
-
Sub-task
-
Status: Closed
-
Minor
-
Resolution: Workaround
-
None
-
None
-
None
-
None
Description
This was identified in KNOX-1023 and KNOX-1270. Best detail to reproduce comes from KNOX-1023.
When nodemanager links are accessed through YARNUI service, it requires the host and port to be appended in the URI , something like:
https://host:8443/gateway/sandbox/yarn/nodemanager/node/containerlogs/container_e02_1498543212255_0001_01_000001/user?host=nm-host&port=8042
When I'm coming from the RM page, this link is rendered as an absolute one, so the rewrite rule works fine and appends the host and port. However, when I'm on the NM page itself, the URLs are not absolute(the URL's on NM page are relative), so a different rewrite rule applies:
DEBUG hadoop.gateway (UrlRewriteProcessor.java:rewrite(164)) - Rewrote URL: /node/containerlogs/container_e01_1498485266952_0006_01_000001/hiyer qa3july/stderr/?start=-4096, direction: OUT via implicit rule: YARNUI/yarn/outbound/node to URL: https://host:8443/gateway/sandbox/yarn/node/containerlogs/container_e01_1498485266952_0006_01_000001/user/stderr
As you can see, this link does not contain the host=nm-host&port=8042 at the end of query string, so it does not work. This affects log links for running tasks, and links for the nodemanager itself.
So, the links on NM page of type
href=/syslog
gets transformed to
https://host:8443/gateway/sandbox/yarn/nodemanager/node/containerlogs/container_e02_1498543212255_0001_01_000001/user/syslog
whereas it should have been transformed to
https://host:8443/gateway/sandbox/yarn/nodemanager/node/containerlogs/container_e02_1498543212255_0001_01_000001/user/syslog?host=nm-host&port=8042