Yes I am using HA for resource manager and in that case what should I do to
the fix this issue?

Best,

Theyaa.


On Thu, Sep 6, 2018 at 2:24 PM Sandeep Moré <moresand...@gmail.com> wrote:

> Are you using HA setup ? in which case org.apache.
> hadoop.gateway.rm.dispatch.RMUIHaDispatch dispatch will be used.
>
> On Thu, Sep 6, 2018 at 2:19 PM Theyaa Matti <theyaama...@gmail.com> wrote:
>
>> I created the class as follows:
>>
>> package org.apache.knox.gateway.dispatch;
>>
>> import javax.servlet.http.HttpServletRequest;
>> import java.net.URI;
>> import java.net.URLDecoder;
>> import org.apache.hadoop.gateway.dispatch.DefaultDispatch;
>>
>> /**
>>  * Dispatch which decodes the outgoing URLs (to services).
>>  * This is useful in cases where the url is picked up
>>  * from the query parameter and is already encoded.
>>  *
>>  * @since 1.1.0
>>  */
>> public class URLDecodingDispatch extends DefaultDispatch {
>>
>>     public URLDecodingDispatch() {
>>         super();
>>     }
>>
>>     @Override
>>     public URI getDispatchUrl(final HttpServletRequest request) {
>>         String decoded;
>>
>>         try {
>>             decoded = URLDecoder.decode(request.getRequestURL().toString(), 
>> "UTF-8" );
>>         } catch (final Exception e) {
>>       /* fall back in case of exception */
>>             decoded = request.getRequestURL().toString();
>>         }
>>
>>         final StringBuffer str = new StringBuffer(decoded);
>>         final String query = request.getQueryString();
>>         if ( query != null ) {
>>             str.append('?');
>>             str.append(query);
>>         }
>>         final URI url = URI.create(str.toString());
>>         return url;
>>     }
>> }
>>
>>
>> packaged it into a jar and uploaded it to the knox lib dir. I can see
>> Knox loading the jar file at start:
>> resource.FileResource (FileResource.java:checkFileAlias(152)) - ALIAS
>> abs=/knox/bin/../lib/knox-1.0-SNAPSHOT.jar
>> can=/knox/lib/knox-1.0-SNAPSHOT.jar
>>
>> I modified the service.xml for yarnui as follows.
>>
>> <dispatch classname="org.apache.knox.gateway.dispatch.URLDecodingDispatch"
>> ha-classname="org.apache.hadoop.gateway.rm.dispatch.RMUIHaDispatch"/>
>>
>>
>>
>> Deleted everything under deployments and restarted knox.
>>
>>
>> I do not see any changes in the behavior and do not see that class being
>> called. Do you please know what I am missing?
>>
>>
>> Regards,
>>
>>
>>
>>
>>
>>
>> On Thu, Sep 6, 2018 at 9:38 AM Sandeep Moré <moresand...@gmail.com>
>> wrote:
>>
>>> URLDecodingDispatch extends DefaultDispatch so you should be there.
>>>
>>> Best,
>>> Sandeep
>>>
>>> On Thu, Sep 6, 2018 at 9:32 AM Theyaa Matti <theyaama...@gmail.com>
>>> wrote:
>>>
>>>> That should be a good idea, but I still have an issue with adding the
>>>> custom dispatch to the yarnui service.xml. I already have an existing class
>>>> there <dispatch 
>>>> classname="org.apache.hadoop.gateway.dispatch.DefaultDispatch"
>>>> ha-classname="org.apache.hadoop.gateway.rm.dispatch.RMUIHaDispatch"/>
>>>>
>>>> Should I replace the DefaultDispatch or I can have more than one there?
>>>>
>>>> Regards,
>>>>
>>>>
>>>> On Tue, Sep 4, 2018 at 10:14 PM Dhruv Goyal <777.dh...@gmail.com>
>>>> wrote:
>>>>
>>>>> In that case you might have to build the jar yourself or preferably
>>>>> use your custom dispatch similar to URLDecodingDispatch.
>>>>>
>>>>> Regards
>>>>> Dhruv
>>>>>
>>>>> On Wednesday, September 5, 2018, Theyaa Matti <theyaama...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Sorry 0.12.0
>>>>>>
>>>>>> On Tue, Sep 4, 2018 at 2:30 PM Theyaa Matti <theyaama...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I am using Knox 1.12.0
>>>>>>>
>>>>>>> On Tue, Sep 4, 2018 at 2:28 PM Sandeep Moré <moresand...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> You can try
>>>>>>>> using "org.apache.knox.gateway.dispatch.URLDecodingDispatch" dispatch 
>>>>>>>> in
>>>>>>>> service.xml ( Knox 1.1.0)
>>>>>>>>
>>>>>>>> Best,
>>>>>>>> Sandeep
>>>>>>>>
>>>>>>>> On Tue, Sep 4, 2018 at 2:09 PM Theyaa Matti <theyaama...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I am having issues with Knox encoding the following URL when
>>>>>>>>> parsing html content.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> /proxy/application_222233323323_0001/stages/stage?id=0&amp;attempt=0
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> This URL is generated by Yarn to track a running spark job. When
>>>>>>>>> applying regular rules to the above URL, Knox encodes the URL to:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> /proxy/application_222233323323
>>>>>>>>> _0001/stages/stage?amp%3Battempt=0&id=0
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Which makes the URL unusable and leads to a 404. To make the URL
>>>>>>>>> work I have to remove "amp%3B" and then it works.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Below are the filter and the rule I am using for this URL and I
>>>>>>>>> appreciate your help/comments for a remediation.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> <filter name="YARNUI/yarn/outbound/apps1">
>>>>>>>>>     <content type="*/html">
>>>>>>>>>         <apply path="/proxy/[^']+/stages/stage[^']*" 
>>>>>>>>> rule="YARNUI/yarn/outbound/apps/history3"/>
>>>>>>>>>     </content>
>>>>>>>>> </filter>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> <rule dir="OUT" name="YARNUI/yarn/outbound/apps/history3">
>>>>>>>>>     <match pattern="/proxy/{*}/stages/stage?{**}"/>
>>>>>>>>>     <rewrite 
>>>>>>>>> template="{$frontend[url]}/yarn/proxy/{*}/stages/stage?{**}"/>
>>>>>>>>> </rule>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thank you for your help.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>

Reply via email to