Jarek Jarcec Cecho created SQOOP-1784:
-----------------------------------------
Summary: Sqoop2: Sending POST request to link or job end-point
might end up with NPE
Key: SQOOP-1784
URL: https://issues.apache.org/jira/browse/SQOOP-1784
Project: Sqoop
Issue Type: Bug
Affects Versions: 1.99.4
Reporter: Jarek Jarcec Cecho
Assignee: Jarek Jarcec Cecho
Fix For: 1.99.5
I was testing few patches on real cluster and noticed that creating link on
current head of {{sqoop2}} branch can lead to NPE in {{LinkBean}}. I've traced
the code and found out that
{{[ctx.getRequest().getReader()|https://github.com/apache/sqoop/blob/sqoop2/server/src/main/java/org/apache/sqoop/handler/LinkRequestHandler.java#L114]}}
is returning empty buffer and as a result the subsequent call to
{{JSONValue.parse}} returns {{null}} and we hit {{NullPointerException}} later
in {{LInkBean}}.
This one was quite hard to crack, but I believe that I've isolated the problem.
In SQOOP-1774 we've changed the way to get username from header to URL
parameter and we're using
{{[ServletRequest.getParameter()|https://github.com/apache/sqoop/blob/sqoop2/server/src/main/java/org/apache/sqoop/server/RequestContext.java#L121]}}
method for that. Carefully reading it's
[javadoc|https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)]
I found out that:
{quote}
If the parameter data was sent in the request body, such as occurs with an HTTP
POST request, then reading the body directly via getInputStream() or
getReader() can interfere with the execution of this method
{quote}
And hence I'm assuming that getting the username has processed the request body
already and thus we got the eventual {{NullPointerException}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)