Thanks Sandeep. I will try this out.

From: Sandeep Moré <[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Wednesday, 18 July 2018 at 9:43 PM
To: "[email protected]" <[email protected]>
Subject: Re: Issue while accessing URIs containing '%'

Hello Rajat,

I am not well aware of Grafana UI so I do not know how the URL should look like 
so I am assuming you need % to be in the url right ?

Can you try using the following dispatches

  1.  PassAllHeadersNoEncodingDispatch
  2.  URLDecodingDispatch
Hopefully one of them should work.

Best,
Sandeep


On Tue, Jul 17, 2018 at 1:02 PM Rajat Goel 
<[email protected]<mailto:[email protected]>> wrote:
Hi,

I am trying to integrate Grafana UI with Knox. Grafana UI main page internally 
sends a request URI 
‘https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514<https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%25&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514>’
 to Knox. Notice here that there is a query param: ‘hostname=%’.

In the logs I see that Knox rewrites the url using rewrite rule but there are 
exceptions:



2018-07-17 13:01:21,332 DEBUG hadoop.gateway 
(UrlRewriteProcessor.java:rewrite(166)) - Rewrote

URL: 
https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514<https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%25&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514>,
 direction: IN via explicit rule: GRAFANAUI/grafana/inbound/queryvariable to 
URL: 
http://mst-01.mydomain.com:3000/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%25&instanceId=&appId=ams-hbase&startTime=1531806914&endTime=1531828514

2018-07-17 13:01:21,335 ERROR hadoop.gateway 
(AbstractGatewayFilter.java:doFilter(69)) - Failed to execute filter: 
java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) 
pattern

java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) 
pattern

at java.net.URLDecoder.decode(URLDecoder.java:187)

at org.apache.hadoop.gateway.util.HttpUtils.splitQuery(HttpUtils.java:46)

at 
org.apache.hadoop.gateway.identityasserter.common.filter.IdentityAsserterHttpServletRequestWrapper.getParams(IdentityAsserterHttpServletRequestWrapper.java:135)

at 
org.apache.hadoop.gateway.identityasserter.common.filter.IdentityAsserterHttpServletRequestWrapper.getParams(IdentityAsserterHttpServletRequestWrapper.java:154)

at 
org.apache.hadoop.gateway.identityasserter.common.filter.IdentityAsserterHttpServletRequestWrapper.getQueryString(IdentityAsserterHttpServletRequestWrapper.java:162)

at 
org.apache.hadoop.gateway.dispatch.AbstractGatewayDispatch.getDispatchUrl(AbstractGatewayDispatch.java:83)

at 
org.apache.hadoop.gateway.dispatch.GatewayDispatchFilter$GetAdapter.doMethod(GatewayDispatchFilter.java:132)

at 
org.apache.hadoop.gateway.dispatch.GatewayDispatchFilter.doFilter(GatewayDispatchFilter.java:115)

at 
org.apache.hadoop.gateway.filter.AbstractGatewayFilter.doFilter(AbstractGatewayFilter.java:61)

My rewrite rule is very simple of the form:
<rule dir="IN" name=" GRAFANAUI/grafana/inbound/queryvariable" 
pattern="*://*:*/**/grafana/{**}?{**}">
        <rewrite template="{$serviceUrl[GRAFANA]}/{**}?{**}"/>
    </rule>

I am using PassAllHeadersDispatch. Knox rewrires the URL with query param 
‘hostname=%25’.

How can I fix this ?

Thanks & Regards,
Rajat

Reply via email to