----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/55256/#review165093 -----------------------------------------------------------
As part of this patch, please also change the httpmime version to 4.5.3 for consistency. Also, the httpcore dependency should be changed to 4.4.6, as this is the version that is associated with httpclient 4.5.3. - Colm O hEigeartaigh On Feb. 10, 2017, 8:19 a.m., Qiang Zhang wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/55256/ > ----------------------------------------------------------- > > (Updated Feb. 10, 2017, 8:19 a.m.) > > > Review request for ranger, Don Bosco Durai, Colm O hEigeartaigh, Ramesh Mani, > Selvamohan Neethiraj, and Velmurugan Periasamy. > > > Bugs: RANGER-1289 > https://issues.apache.org/jira/browse/RANGER-1289 > > > Repository: ranger > > > Description > ------- > > Steps: > 1.Start ranger-kms service > 2.Configure KMS Client and restart hdfs > 3.Create a key named key0 in the Ranger Web UI > 4.Execute the following command in hadoop environment,create an encrypted zone > [xhh@zdh41 ~]$hdfs dfs -mkdir /keyZone > [xhh@zdh41 ~]$hdfs crypto -createZone -keyName key0 -path /keyZone > > > Error message poped out as below: > ranger-0.7.0-SNAPSHOT-kms/ews/logs/kms.log > > 2017-01-04 14:27:13,256 ERROR [webservices-driver] - Servlet.service() for > servlet [webservices-driver] in context with path [/kms] threw exception > java.lang.NullPointerException > at > org.apache.http.client.utils.URLEncodedUtils.parse(URLEncodedUtils.java:235) > at > org.apache.hadoop.security.token.delegation.web.ServletUtils.getParameter(ServletUtils.java:48) > at > org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticationHandler.managementOperation(DelegationTokenAuthenticationHandler.java:171) > at > org.apache.hadoop.security.authentication.server.AuthenticationFilter.doFilter(AuthenticationFilter.java:514) > at > org.apache.hadoop.crypto.key.kms.server.KMSAuthenticationFilter.doFilter(KMSAuthenticationFilter.java:129) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) > > I analyzed the reasons,Ranger-Kms relies on httpclient version 4.5.1, there > is a bug, as follows: > org/apache/http/client/utils/URLEncodedUtils.java > {code:java} > public static List<NameValuePair> parse(String s, Charset charset) { > CharArrayBuffer buffer = new CharArrayBuffer(s.length()); > buffer.append(s); > return parse(buffer, charset, new char[]{'&', ';'}); > } > {code} > When the parameter 's' is null, it will pop out NullPointException. > And in httpclient version 4.5.3, there is no problem. the new code is as > follows: > {code:java} > public static List<NameValuePair> parse(final String s, final Charset > charset) { > if (s == null) { > return Collections.emptyList(); > } > final CharArrayBuffer buffer = new CharArrayBuffer(s.length()); > buffer.append(s); > return parse(buffer, charset, QP_SEP_A, QP_SEP_S); > } > {code} > > > Diffs > ----- > > pom.xml 19caacd > > Diff: https://reviews.apache.org/r/55256/diff/ > > > Testing > ------- > > [xhh@zdh41 ~]$ hadoop key list -metadata > 17/02/10 16:20:48 WARN util.NativeCodeLoader: Unable to load native-hadoop > library for your platform... using builtin-java classes where applicable > Listing keys for KeyProvider: KMSClientProvider[http://zdh41:9292/kms/v1/] > key0 : cipher: AES/CTR/NoPadding, length: 128, description: , created: Thu > Feb 09 09:56:51 CST 2017, version: 1, attributes: [key.acl.name=key0] > > > Thanks, > > Qiang Zhang > >
