blob: 046e3773377af5bc1df19328e02ec98f9f0d979c [file] [log] [blame]
<%
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="org.apache.tajo.master.querymaster.*" %>
<%@ page import="org.apache.tajo.webapp.StaticHttpServer" %>
<%@ page import="org.apache.tajo.worker.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="org.apache.tajo.QueryId" %>
<%@ page import="org.apache.tajo.util.TajoIdUtils" %>
<%@ page import="org.apache.tajo.ExecutionBlockId" %>
<%
QueryId queryId = TajoIdUtils.parseQueryId(request.getParameter("queryId"));
ExecutionBlockId ebid = TajoIdUtils.createExecutionBlockId(request.getParameter("ebid"));
String sort = request.getParameter("sort");
if(sort == null) {
sort = "id";
}
String sortOrder = request.getParameter("sortOrder");
if(sortOrder == null) {
sortOrder = "asc";
}
String nextSortOrder = "asc";
if("asc".equals(sortOrder)) {
nextSortOrder = "desc";
}
TajoWorker tajoWorker = (TajoWorker) StaticHttpServer.getInstance().getAttribute("tajo.info.server.object");
QueryMasterTask queryMasterTask = tajoWorker.getWorkerContext()
.getTajoWorkerManagerService().getQueryMaster().getQueryMasterTask(queryId, true);
if(queryMasterTask == null) {
out.write("<script type='text/javascript'>alert('no query'); history.back(0); </script>");
return;
}
Query query = queryMasterTask.getQuery();
SubQuery subQuery = query.getSubQuery(ebid);
if(subQuery == null) {
out.write("<script type='text/javascript'>alert('no sub-query'); history.back(0); </script>");
return;
}
if(subQuery == null) {
%>
<script type="text/javascript">
alert("No Execution Block for" + ebid);
document.history.back();
</script>
<%
return;
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String url = "querytasks.jsp?queryId=" + queryId + "&ebid=" + ebid + "&sortOrder=" + nextSortOrder + "&sort=";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="/static/style.css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Query Detail Info</title>
</head>
<body>
<%@ include file="header.jsp"%>
<div class='contents'>
<h2>Tajo Worker: <a href='index.jsp'><%=tajoWorker.getWorkerContext().getWorkerName()%></a></h2>
<hr/>
<h3><%=ebid.toString()%>(<%=subQuery.getState()%>)</h3>
<div>Started:<%=df.format(subQuery.getStartTime())%> ~ <%=subQuery.getFinishTime() == 0 ? "-" : df.format(subQuery.getFinishTime())%></div>
<hr/>
<table border="1" width="100%" class="border_table">
<tr><th><a href='<%=url%>id'>Id</a></th><th>Status</th><th><a href='<%=url%>startTime'>Start Time</a></th><th><a href='<%=url%>runTime'>Running Time</a></th><th><a href='<%=url%>host'>Host</a></th></tr>
<%
QueryUnit[] queryUnits = subQuery.getQueryUnits();
JSPUtil.sortQueryUnit(queryUnits, sort, sortOrder);
for(QueryUnit eachQueryUnit: queryUnits) {
%>
<tr>
<td><%=eachQueryUnit.getId()%></td>
<td><%=eachQueryUnit.getState()%></td>
<td><%=eachQueryUnit.getLaunchTime() == 0 ? "-" : df.format(eachQueryUnit.getLaunchTime())%></td>
<td><%=eachQueryUnit.getLaunchTime() == 0 ? "-" : eachQueryUnit.getRunningTime() + " ms"%></td>
<td><%=eachQueryUnit.getSucceededHost() == null ? "-" : eachQueryUnit.getSucceededHost()%></td>
</tr>
<%
}
%>
</table>
<%
%>
</div>
</body>
</html>