@Override public int compare(QueryMasterTask task1, QueryMasterTask task2) { if(desc) { return task2.getQueryId().toString().compareTo(task1.getQueryId().toString()); } else { return task1.getQueryId().toString().compareTo(task2.getQueryId().toString()); } } });
@Override public int compare(QueryMasterTask task1, QueryMasterTask task2) { if(desc) { return task2.getQueryId().toString().compareTo(task1.getQueryId().toString()); } else { return task1.getQueryId().toString().compareTo(task2.getQueryId().toString()); } } });
public void run() { LOG.info("ClientSessionTimeoutCheckThread started"); while(!isStopped) { try { synchronized (this) { this.wait(1000); } } catch (InterruptedException e) { break; } List<QueryMasterTask> tempTasks = new ArrayList<QueryMasterTask>(); tempTasks.addAll(queryMasterTasks.values()); for(QueryMasterTask eachTask: tempTasks) { if(!eachTask.isStopped()) { try { long lastHeartbeat = eachTask.getLastClientHeartbeat(); long time = System.currentTimeMillis() - lastHeartbeat; if(lastHeartbeat > 0 && time > querySessionTimeout * 1000) { LOG.warn("Query " + eachTask.getQueryId() + " stopped cause query session timeout: " + time + " ms"); eachTask.expireQuerySession(); } } catch (Exception e) { LOG.error(eachTask.getQueryId() + ":" + e.getMessage(), e); } } } } } }
public void run() { LOG.info("ClientSessionTimeoutCheckThread started"); while(!isStopped) { try { synchronized (this) { this.wait(1000); } } catch (InterruptedException e) { break; } List<QueryMasterTask> tempTasks = new ArrayList<>(); tempTasks.addAll(queryMasterTasks.values()); for(QueryMasterTask eachTask: tempTasks) { if(!eachTask.isStopped()) { try { long lastHeartbeat = eachTask.getLastClientHeartbeat(); long time = System.currentTimeMillis() - lastHeartbeat; if(lastHeartbeat > 0 && time > querySessionTimeout * 1000) { LOG.warn("Query " + eachTask.getQueryId() + " stopped cause query session timeout: " + time + " ms"); eachTask.expireQuerySession(); } } catch (Exception e) { LOG.error(eachTask.getQueryId() + ":" + e.getMessage(), e); } } } } } }
@Override public void serviceStop() throws Exception { isStopped = true; LOG.info("Stopping QueryMasterTask:" + queryId); //release QM resource EventHandler handler = getQueryTaskContext().getQueryMasterContext().getWorkerContext(). getNodeResourceManager().getDispatcher().getEventHandler(); handler.handle(new NodeResourceDeallocateEvent(allocation, NodeResourceEvent.ResourceType.QUERY_MASTER)); //flush current node resource handler.handle(new NodeStatusEvent(NodeStatusEvent.EventType.FLUSH_REPORTS)); if (!queryContext.getBool(SessionVars.DEBUG_ENABLED)) { cleanupQuery(getQueryId()); } super.serviceStop(); LOG.info("Stopped QueryMasterTask:" + queryId); }
@Override public void handle(QueryStartEvent event) { LOG.info("Start QueryStartEventHandler:" + event.getQueryId()); QueryMasterTask queryMasterTask = new QueryMasterTask(queryMasterContext, event.getQueryId(), event.getSession(), event.getQueryContext(), event.getJsonExpr(), event.getAllocation()); synchronized(queryMasterTasks) { queryMasterTasks.put(event.getQueryId(), queryMasterTask); } queryMasterTask.init(systemConf); if (!queryMasterTask.isInitError()) { queryMasterTask.start(); } queryContext = event.getQueryContext(); if (queryMasterTask.isInitError()) { queryMasterContext.stopQuery(queryMasterTask.getQueryId()); } } }
@Override public void serviceStop() throws Exception { isStopped = true; LOG.info("Stopping QueryMasterTask:" + queryId); //release QM resource EventHandler handler = getQueryTaskContext().getQueryMasterContext().getWorkerContext(). getNodeResourceManager().getDispatcher().getEventHandler(); handler.handle(new NodeResourceDeallocateEvent(new Allocation(allocation), NodeResourceEvent.ResourceType.QUERY_MASTER)); //flush current node resource handler.handle(new NodeStatusEvent(NodeStatusEvent.EventType.FLUSH_REPORTS)); if (!queryContext.getBool(SessionVars.DEBUG_ENABLED)) { cleanupQuery(getQueryId()); } super.serviceStop(); LOG.info("Stopped QueryMasterTask:" + queryId); }
@Override public void handle(QueryStartEvent event) { LOG.info("Start QueryStartEventHandler:" + event.getQueryId()); QueryMasterTask queryMasterTask = new QueryMasterTask(queryMasterContext, event.getQueryId(), event.getSession(), event.getQueryContext(), event.getJsonExpr(), event.getAllocation()); synchronized(queryMasterTasks) { queryMasterTasks.put(event.getQueryId(), queryMasterTask); } queryMasterTask.init(systemConf); if (!queryMasterTask.isInitError()) { queryMasterTask.start(); } queryContext = event.getQueryContext(); if (queryMasterTask.isInitError()) { queryMasterContext.stopQuery(queryMasterTask.getQueryId()); } } }
public QueryMasterTask getQueryMasterTask(QueryId queryId) { QueryMasterTask qmt = null; for (TajoWorker worker : getTajoWorkers()) { qmt = worker.getWorkerContext().getQueryMaster().getQueryMasterTask(queryId, true); if (qmt != null && queryId.equals(qmt.getQueryId())) { break; } } return qmt; }
private TajoHeartbeatRequest buildTajoHeartBeat(QueryMasterTask queryMasterTask) { TajoHeartbeatRequest.Builder builder = TajoHeartbeatRequest.newBuilder(); builder.setConnectionInfo(workerContext.getConnectionInfo().getProto()); builder.setQueryId(queryMasterTask.getQueryId().getProto()); builder.setState(queryMasterTask.getState()); if (queryMasterTask.getQuery() != null) { if (queryMasterTask.getQuery().getResultDesc() != null) { builder.setResultDesc(queryMasterTask.getQuery().getResultDesc().getProto()); } builder.setQueryProgress(queryMasterTask.getQuery().getProgress()); if(queryMasterTask.getQuery().getFailureReason() != null) { builder.setError(queryMasterTask.getQuery().getFailureReason()); } } if (queryMasterTask.isInitError()) { builder.setError(ErrorUtil.convertException(queryMasterTask.getInitError())); } return builder.build(); }
private TajoHeartbeatRequest buildTajoHeartBeat(QueryMasterTask queryMasterTask) { TajoHeartbeatRequest.Builder builder = TajoHeartbeatRequest.newBuilder(); builder.setConnectionInfo(workerContext.getConnectionInfo().getProto()); builder.setQueryId(queryMasterTask.getQueryId().getProto()); builder.setState(queryMasterTask.getState()); if (queryMasterTask.getQuery() != null) { if (queryMasterTask.getQuery().getResultDesc() != null) { builder.setResultDesc(queryMasterTask.getQuery().getResultDesc().getProto()); } builder.setQueryProgress(queryMasterTask.getQuery().getProgress()); if(queryMasterTask.getQuery().getFailureReason() != null) { builder.setError(queryMasterTask.getQuery().getFailureReason()); } } if (queryMasterTask.isInitError()) { builder.setError(ErrorUtil.convertException(queryMasterTask.getInitError())); } return builder.build(); }