diff --git service/src/java/org/apache/hive/service/cli/operation/OperationManager.java service/src/java/org/apache/hive/service/cli/operation/OperationManager.java index 38f27efcf16f0507e539692174d7b933df755a32..96c01de40fa581f1583fc3f9a93a2c71355ebc04 100644 --- service/src/java/org/apache/hive/service/cli/operation/OperationManager.java +++ service/src/java/org/apache/hive/service/cli/operation/OperationManager.java @@ -22,13 +22,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Queue; import java.util.concurrent.ConcurrentHashMap; import com.google.common.collect.EvictingQueue; @@ -192,7 +189,9 @@ private Operation removeTimedOutOperation(OperationHandle operationHandle) { synchronized (webuiLock) { String opKey = operationHandle.getHandleIdentifier().toString(); SQLOperationDisplay display = liveSqlOperations.remove(opKey); - historicSqlOperations.put(opKey, display); + if (historicSqlOperations != null) { + historicSqlOperations.put(opKey, display); + } } return operation; } @@ -214,7 +213,9 @@ private Operation removeOperation(OperationHandle opHandle) { synchronized (webuiLock) { String opKey = opHandle.getHandleIdentifier().toString(); SQLOperationDisplay display = liveSqlOperations.remove(opKey); - historicSqlOperations.put(opKey, display); + if (historicSqlOperations != null) { + historicSqlOperations.put(opKey, display); + } } return result; } @@ -353,7 +354,9 @@ public OperationLog getOperationLogByThread() { public List getHistoricalSQLOperations() { List result = new LinkedList<>(); synchronized (webuiLock) { - result.addAll(historicSqlOperations.values()); + if (historicSqlOperations != null) { + result.addAll(historicSqlOperations.values()); + } } return result; } @@ -375,6 +378,10 @@ public OperationLog getOperationLogByThread() { */ public SQLOperationDisplay getSQLOperationDisplay(String handle) { synchronized (webuiLock) { + if (historicSqlOperations == null) { + return null; + } + SQLOperationDisplay result = liveSqlOperations.get(handle); if (result != null) { return result; diff --git service/src/java/org/apache/hive/service/servlet/QueryProfileServlet.java service/src/java/org/apache/hive/service/servlet/QueryProfileServlet.java index 74a374d27d9c5dea8472308b88dde5ba846342a4..8fa447a386c5a7a000b04453618f502e1681364e 100644 --- service/src/java/org/apache/hive/service/servlet/QueryProfileServlet.java +++ service/src/java/org/apache/hive/service/servlet/QueryProfileServlet.java @@ -21,6 +21,9 @@ import org.apache.hive.service.cli.operation.SQLOperationDisplay; import org.apache.hive.service.cli.session.SessionManager; import org.apache.hive.tmpl.QueryProfileTmpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.servlet.ServletContext; import javax.servlet.ServletException; @@ -33,6 +36,8 @@ * Renders a query page */ public class QueryProfileServlet extends HttpServlet { + private static final Logger LOG = LoggerFactory.getLogger(QueryProfileServlet.class); + @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { @@ -42,8 +47,11 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) (SessionManager)ctx.getAttribute("hive.sm"); OperationManager opManager = sessionManager.getOperationManager(); SQLOperationDisplay sod = opManager.getSQLOperationDisplay(opId); + if (sod == null) { + LOG.debug("No display object found for operation {} ", opId); + return; + } new QueryProfileTmpl().render(response.getWriter(), sod); } - }