-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/44312/#review122177
-----------------------------------------------------------


Ship it!




Ship It!

- Madhan Neethiraj


On March 3, 2016, 9:07 a.m., Pradeep Agrawal wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/44312/
> -----------------------------------------------------------
> 
> (Updated March 3, 2016, 9:07 a.m.)
> 
> 
> Review request for ranger, Alok Lal, Don Bosco Durai, Gautam Borad, Abhay 
> Kulkarni, Madhan Neethiraj, Ramesh Mani, Selvamohan Neethiraj, and Velmurugan 
> Periasamy.
> 
> 
> Bugs: RANGER-863
>     https://issues.apache.org/jira/browse/RANGER-863
> 
> 
> Repository: ranger
> 
> 
> Description
> -------
> 
> **Problem Statement :**
> Parameters like maxHttpHeaderSize are not configurable in EmbeddedServer used 
> by Ranger and RangerKMS.
> This ability is required to handle large header requests in kerberised (when 
> ticket size is large) environment for Ranger KMS as well as Ranger Admin.
> 
> **Proposed Solution :**
> Attached patch contains changes in EmbeddedServer.java file which is being 
> used to start tomcat service after instantiating the connector. In 
> ranger-admin-site.xml and kms-site.xml properties file, tomcat attributes can 
> be added with prefix ranger.service.http.connector.property., Where 
> ranger.service.http.connector.property.<tomcat-attribute> shall be the 
> property name and value tag can have valid value allowed in tomcat connector.
> For example : An entry for maxHttpHeaderSize attribute in ranger-admin-site 
> would be : 
> 
> <property>
>     <name>ranger.service.http.connector.property.maxHttpHeaderSize</name>
>     <value>81920</value>
> </property>
> 
> Similarly below given connector properties can be configured : 
> 
> acceptCount
> acceptorThreadCount
> connectionTimeout
> keepAliveTimeout
> maxConnections
> maxHttpHeaderSize
> maxKeepAliveRequests
> maxThreads
> compression
> 
> Also there are few attributes which can't be overridden using above mentioned 
> approach as tomcat has separate setter method to override those attribute 
> values. For these attributes we will use prefix 
> ranger.service.http.connector.attrib., but only below mentioned attribute 
> shall be supported in this approach as of now. 
> 
> allowTrace
> asyncTimeout
> enableLookups
> maxHeaderCount
> maxParameterCount
> maxPostSize
> maxSavePostSize
> methods
> 
> I have implemented both approaches to override the default value of above 
> attributes and the other properties also which can be configured through 
> setProperty() method of Connector class.
> 
> 
> Diffs
> -----
> 
>   
> embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
>  fbd61f0 
> 
> Diff: https://reviews.apache.org/r/44312/diff/
> 
> 
> Testing
> -------
> 
> **Steps performed (with patch) :**
> 1. After Ranger installation, started Ranger admin and tried a REST call with 
> huge HTTP header size.
> curl -i -u admin:admin -H "X-LongHeader: $(cat /dev/urandom | tr -dc 
> 'a-zA-Z0-9' | fold -w 8192 | head -n 1)" http://localhost:6080/service/users/1
> 
> 2. After above request got below given response from server :
> 
> HTTP/1.1 400 Bad Request
> Server: Apache-Coyote/1.1
> Transfer-Encoding: chunked
> Date: Thu, 03 Mar 2016 04:49:20 GMT
> Connection: close
> 
> and below given log was observed in catalina.out :
> 
> INFO: Error parsing HTTP request header
> 
> 3. Now to solve above issue stopped the Ranger admin and configured property 
> for maxHttpHeaderSize attribute in ranger-admin-site.xml and then restart the 
> Ranger admin.
> <property>
>     <name>ranger.service.http.connector.property.maxHttpHeaderSize</name>
>     <value>81920</value>
> </property>
> 
> 4. Tried above mentioned REST call again and got the Response code '200 OK' 
> along with expected output.
> 
> 
> Thanks,
> 
> Pradeep Agrawal
> 
>

Reply via email to