[
https://issues.apache.org/jira/browse/HIVE-3265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13416714#comment-13416714
]
Carl Steinbach commented on HIVE-3265:
--------------------------------------
The following NPE appeared in the log after running LOAD DATA commands:
{noformat}
2012-07-17 13:34:20,653 ERROR ql.Driver (SessionState.java:printError(380)) -
FAILED: Hive Internal Error: java.lang.NullPointerException(null)
java.lang.NullPointerException
at
org.apache.hadoop.hive.ql.history.HiveHistory.printRowCount(HiveHistory.java:411)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1241)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:931)
at
org.apache.hadoop.hive.service.HiveServer$HiveServerHandler.execute(HiveServer.java:191)
at
org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:629)
at
org.apache.hadoop.hive.service.ThriftHive$Processor$execute.getResult(ThriftHive.java:617)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
{noformat}
Here's the relevant code from the HiveHistory class. Line 411 corresponds to
the for loop condition:
{code}
public void printRowCount(String queryId) {
QueryInfo ji = queryInfoMap.get(queryId);
for (String tab : ji.rowCountMap.keySet()) {
console.printInfo(ji.rowCountMap.get(tab) + " Rows loaded to " + tab);
}
}
{code}
So it looks like queryInfoMap doesn't have a QueryInfo object for the request
queryId.
It's worth noting that most of the other references to queryInfoMap in
HiveHistory do a null check on the returned object before dereferencing.
And then there's this pattern, which I see repeated in most of the HiveHistory
setters:
{code}
public void setQueryProperty(String queryId, Keys propName, String propValue)
{
QueryInfo ji = queryInfoMap.get(queryId);
if (ji == null) {
return;
}
ji.hm.put(propName.name(), propValue);
}
{code}
In other words, setQueryProperty() will pretend that it set the request
property even if it can't find the QueryInfo object. How polite!
> HiveHistory.printRowCount() throws NPE
> --------------------------------------
>
> Key: HIVE-3265
> URL: https://issues.apache.org/jira/browse/HIVE-3265
> Project: Hive
> Issue Type: Bug
> Components: Server Infrastructure
> Affects Versions: 0.8.1
> Reporter: Carl Steinbach
> Assignee: Carl Steinbach
>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira