You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@knox.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2022/02/23 06:05:00 UTC

[jira] [Work logged] (KNOX-2531) Kill Application button in YARN does not work through KNOX

     [ https://issues.apache.org/jira/browse/KNOX-2531?focusedWorklogId=731373&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-731373 ]

ASF GitHub Bot logged work on KNOX-2531:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 23/Feb/22 06:04
            Start Date: 23/Feb/22 06:04
    Worklog Time Spent: 10m 
      Work Description: smolnar82 merged pull request #399:
URL: https://github.com/apache/knox/pull/399


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@knox.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 731373)
    Time Spent: 2h 10m  (was: 2h)

> Kill Application button in YARN does not work through KNOX
> ----------------------------------------------------------
>
>                 Key: KNOX-2531
>                 URL: https://issues.apache.org/jira/browse/KNOX-2531
>             Project: Apache Knox
>          Issue Type: Bug
>    Affects Versions: 1.4.0
>            Reporter: Iain Buclaw
>            Priority: Major
>         Attachments: image-2021-01-21-12-25-56-040.png
>
>          Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> I think the fix is similar to KNOX-2456.
> The Kill Application button
> !image-2021-01-21-12-25-56-040.png!
> Ends up being rewritten as: [https://host:443/gateway/proxy/yarnhttps:/host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state|https://host/gateway/proxy/yarnhttps:/host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state]
> Debug logs show:
> {code:java}
> 2021-01-21 10:20:05,069 DEBUG knox.gateway (UrlRewriteProcessor.java:rewrite(164)) - Rewrote URL: /ws/v1/cluster/apps/application, direction: OUT via explicit rule: YARNUI/yarn/outbound/apps/cluster1 to URL: https://host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application
> 2021-01-21 10:20:05,070 DEBUG knox.gateway (UrlRewriteProcessor.java:rewrite(164)) - Rewrote URL: /ws/v1/cluster/apps/application_1611223368889_0003/state', contentType: 'application/json', data: '{"state":"KILLED"}', dataType: 'json' }).done(function(data){ setTimeout(function(){ location.href = '/cluster/app/application_1611223368889_0003'; }, 1000); }).fail(function(data){ console.log(data); }); }}, direction: OUT via explicit rule: YARNUI/yarn/outbound/ws1 to URL: https://host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state', contentType: 'application/json', data: '{"state":"KILLED"}', dataType: 'json' }).done(function(data){ setTimeout(function(){ location.href = '/cluster/app/application_1611223368889_0003'; }, 1000); }).fail(function(data){ console.log(data); }); }}
> 2021-01-21 11:27:02,958 DEBUG knox.gateway (UrlRewriteProcessor.java:rewrite(164)) - Rewrote URL: /cluster/app/application, direction: OUT via explicit rule: YARNUI/yarn/outbound/cluster/app/application to URL: https://host:443/gateway/proxy/yarn/cluster/app/application
> 2021-01-21 10:20:05,071 TRACE knox.gateway (UrlRewriteProcessor.java:rewrite(167)) - Failed to rewrite URL: https://host:443/gateway/proxy/yarnhttps:/host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state, direction: OUT via rule: YARNUI/yarn/outbound/node2, status: FAILURE
> {code}
> This suggests that the original URL path is rewritten twice.
> I suspect it is these two filter rules that's doing the double rewrite.
> {code:java}
> <filter name="YARNUI/yarn/outbound/filter/cluster">
>     <content type="*/html">
>         <apply path="(https?://[^/':,]+:[\d]+)?/ws/v1/cluster/apps/application" rule="YARNUI/yarn/outbound/apps/cluster1"/>
>         <apply path="/ws/v1/.*" rule="YARNUI/yarn/outbound/ws1"/>
>         <!-- snip -->
>     </content>
> </filter>
> {code}
> Originally, it is: /ws/v1/cluster/apps/application_1611223368889_0003/state
> The first apply path rule matches and rewrites it to: [https://host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state|https://host/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state]
> The second apply rule also matches and rewrites it to: [https://host:443/gateway/proxy/yarnhttps:/host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state|https://host/gateway/proxy/yarnhttps:/host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0003/state]
> The broken link is then passed through the rewrite rule processor again, doesn't match anything, so a FAILURE logline is written.
>  
> The final output of the filtered html is:
> {code:java}
> <button onclick="confirmAction()"><b>Kill Application</b></button>
> <script type="text/javascript">
>             function confirmAction() { b = confirm("Are you sure?"); if (b == true) { $.ajax({ type: 'PUT', url: 'https://host:443/gateway/proxy/yarnhttps://host:443/gateway/proxy/yarn/ws/v1/cluster/apps/application_1611223368889_0004/state', contentType: 'application/json', data: '{"state":"KILLED"}', dataType: 'json' }).done(function(data){ setTimeout(function(){ location.href = 'https://host:443/gateway/proxy/yarn/cluster/app/application_1611223368889_0004'; }, 1000); }).fail(function(data){ console.log(data); }); }}
>           </script>
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)