hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Barna Zsombor Klara (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HIVE-15387) NPE in HiveServer2 webUI Historical SQL Operations section
Date Wed, 25 Jan 2017 15:02:26 GMT

     [ https://issues.apache.org/jira/browse/HIVE-15387?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Barna Zsombor Klara updated HIVE-15387:
---------------------------------------
    Attachment: HIVE-15387.1.patch

There is a race condition in the handling of the SQLOperationDisplay classes. Once an operation
is complete/cancelled/timed out we move the SQLOperationDisplay from the live stack to the
historical one. But the runtime is only updated once the state is set, after the SQLOperationDisplay
is already among the historical queries.


> NPE in HiveServer2 webUI Historical SQL Operations section
> ----------------------------------------------------------
>
>                 Key: HIVE-15387
>                 URL: https://issues.apache.org/jira/browse/HIVE-15387
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Barna Zsombor Klara
>            Priority: Minor
>         Attachments: HIVE-15387.1.patch
>
>
> The runtime value on a SQLOperationDisplay may be null, which may lead to NPEs on the
web UI.
> Stack trace:
> {code}
> java.lang.NullPointerException
> 	at org.apache.hive.generated.hiveserver2.hiveserver2_jsp._jspService(hiveserver2_jsp.java:145)
> 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> 	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:565)
> 	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479)
> 	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> 	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521)
> 	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
> 	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)
> 	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
> 	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
> 	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965)
> 	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> 	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
> 	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
> 	at org.eclipse.jetty.server.Server.handle(Server.java:349)
> 	at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:449)
> 	at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:910)
> 	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:634)
> 	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230)
> 	at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76)
> 	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609)
> 	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45)
> 	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
> 	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
> 	at java.lang.Thread.run(Thread.java:745)
> {code}
> Compiled jsp segment:
> {code}
>  124        out.print( conf.get(ConfVars.HIVE_SERVER2_WEBUI_MAX_HISTORIC_QUERIES.varname)
);
>    125        out.write(" Closed Queries</h2>\n<table id=\"attributes_table\"
class=\"table table-striped\">\n    <tr>\n        <th>User Name</th>\n
       <th>Query</th>\n        <th>Execution Engine</th>\n       
<th>State</th>\n        <th>Opened (s)</th>\n        <th>Closed
Timestamp</th>\n        <th>Latency (s)</th>\n        <th>Drilldown
Link</th>\n    </tr>\n    ");
>    126  
>    127        queries = 0;
>    128        operations = sessionManager.getOperationManager().getHistoricalSQLOperations();
>    129        for (SQLOperationDisplay operation : operations) {
>    130            queries++;
>    131      
>    132        out.write("\n    <tr>\n        <td>");
>    133        out.print( operation.getUserName() );
>    134        out.write("</td>\n        <td>");
>    135        out.print( operation.getQueryDisplay() == null ? "Unknown" : operation.getQueryDisplay().getQueryString()
);
>    136        out.write("</td>\n        <td>");
>    137        out.print( operation.getExecutionEngine() );
>    138        out.write("\n        <td>");
>    139        out.print( operation.getState() );
>    140        out.write("</td>\n        <td>");
>    141        out.print( operation.getElapsedTime()/1000 );
>    142        out.write("</td>\n        <td>");
>    143        out.print( operation.getEndTime() == null ? "In Progress" : new Date(operation.getEndTime())
);
>    144        out.write("</td>\n        <td>");
>    145        out.print( operation.getRuntime()/1000 );
>    146        out.write("</td>\n        ");
> {code}
> Still trying to find a way to easily reproduce the issue.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message