@Override public void killQuery(RpcController controller, TajoIdProtos.QueryIdProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { queryMasterTask.getEventHandler().handle(new QueryEvent(queryId, QueryEventType.KILL)); } done.run(TajoWorker.NULL_PROTO); }
public QueryHistory getQueryHistory(QueryId queryId) throws IOException { QueryMasterTask queryMasterTask = getQueryMasterTask(queryId, true); if(queryMasterTask != null) { return queryMasterTask.getQuery().getQueryHistory(); } else { return workerContext.getHistoryReader().getQueryHistory(queryId.toString()); } }
public QueryHistory getQueryHistory(QueryId queryId) throws IOException { QueryMasterTask queryMasterTask = getQueryMasterTask(queryId, true); if(queryMasterTask != null) { return queryMasterTask.getQuery().getQueryHistory(); } else { return workerContext.getHistoryReader().getQueryHistory(queryId.toString()); } }
@Override public void killQuery(RpcController controller, TajoIdProtos.QueryIdProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { queryMasterTask.getEventHandler().handle(new QueryEvent(queryId, QueryEventType.KILL)); } done.run(TajoWorker.NULL_PROTO); }
@Override public void fatalError(RpcController controller, TaskFatalErrorReport report, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(report.getId().getTaskId().getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { queryMasterTask.handleTaskFailed(report); } else { LOG.warn("No QueryMasterTask: " + new TaskAttemptId(report.getId())); } done.run(TajoWorker.NULL_PROTO); }
@Override public void fatalError(RpcController controller, TaskFatalErrorReport report, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(report.getId().getTaskId().getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { queryMasterTask.handleTaskFailed(report); } else { LOG.warn("No QueryMasterTask: " + new TaskAttemptId(report.getId())); } done.run(TajoWorker.NULL_PROTO); }
@Override public void doneExecutionBlock( RpcController controller, ExecutionBlockReport request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(new QueryId(request.getEbId().getQueryId())); if (queryMasterTask != null) { ExecutionBlockId ebId = new ExecutionBlockId(request.getEbId()); queryMasterTask.getEventHandler().handle(new StageShuffleReportEvent(ebId, request)); } done.run(TajoWorker.NULL_PROTO); }
@Override public void done(RpcController controller, TaskCompletionReport report, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(report.getId().getTaskId().getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { queryMasterTask.getEventHandler().handle(new TaskCompletionEvent(report)); } done.run(TajoWorker.NULL_PROTO); }
@Override public void doneExecutionBlock( RpcController controller, ExecutionBlockReport request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(new QueryId(request.getEbId().getQueryId())); if (queryMasterTask != null) { ExecutionBlockId ebId = new ExecutionBlockId(request.getEbId()); queryMasterTask.getEventHandler().handle(new StageShuffleReportEvent(ebId, request)); } done.run(TajoWorker.NULL_PROTO); }
@Override public void done(RpcController controller, TaskCompletionReport report, RpcCallback<PrimitiveProtos.NullProto> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(report.getId().getTaskId().getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { queryMasterTask.getEventHandler().handle(new TaskCompletionEvent(report)); } done.run(TajoWorker.NULL_PROTO); }
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; }
@Override public void statusUpdate(RpcController controller, TaskStatusProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request.getId().getTaskId().getExecutionBlockId().getQueryId()); TaskAttemptId attemptId = new TaskAttemptId(request.getId()); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { Stage sq = queryMasterTask.getQuery().getStage(attemptId.getTaskId().getExecutionBlockId()); Task task = sq.getTask(attemptId.getTaskId()); TaskAttempt attempt = task.getAttempt(attemptId.getId()); if(LOG.isDebugEnabled()){ LOG.debug(String.format("Task State: %s, Attempt State: %s", task.getState().name(), attempt.getState().name())); } if (request.getState() == TajoProtos.TaskAttemptState.TA_KILLED) { LOG.warn(attemptId + " Killed"); attempt.handle( new TaskAttemptEvent(new TaskAttemptId(request.getId()), TaskAttemptEventType.TA_LOCAL_KILLED)); } else { queryMasterTask.getEventHandler().handle( new TaskAttemptStatusUpdateEvent(new TaskAttemptId(request.getId()), request)); } } done.run(TajoWorker.NULL_PROTO); }
@Override public void statusUpdate(RpcController controller, TaskStatusProto request, RpcCallback<PrimitiveProtos.NullProto> done) { QueryId queryId = new QueryId(request.getId().getTaskId().getExecutionBlockId().getQueryId()); TaskAttemptId attemptId = new TaskAttemptId(request.getId()); QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask(queryId); if (queryMasterTask != null) { Stage sq = queryMasterTask.getQuery().getStage(attemptId.getTaskId().getExecutionBlockId()); Task task = sq.getTask(attemptId.getTaskId()); TaskAttempt attempt = task.getAttempt(attemptId.getId()); if(LOG.isDebugEnabled()){ LOG.debug(String.format("Task State: %s, Attempt State: %s", task.getState().name(), attempt.getState().name())); } if (request.getState() == TajoProtos.TaskAttemptState.TA_KILLED) { LOG.warn(attemptId + " Killed"); attempt.handle( new TaskAttemptEvent(new TaskAttemptId(request.getId()), TaskAttemptEventType.TA_LOCAL_KILLED)); } else { queryMasterTask.getEventHandler().handle( new TaskAttemptStatusUpdateEvent(new TaskAttemptId(request.getId()), request)); } } done.run(TajoWorker.NULL_PROTO); }
@Override public void getExecutionBlockContext(RpcController controller, ExecutionBlockContextRequest request, RpcCallback<ExecutionBlockContextResponse> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(request.getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { Stage stage = queryMasterTask.getQuery().getStage(new ExecutionBlockId(request.getExecutionBlockId())); // first request with starting ExecutionBlock PlanProto.ShuffleType shuffleType = stage.getDataChannel().getShuffleType(); ExecutionBlockContextResponse.Builder ebRequestProto = ExecutionBlockContextResponse.newBuilder(); ebRequestProto.setExecutionBlockId(request.getExecutionBlockId()) .setQueryContext(stage.getContext().getQueryContext().getProto()) .setQueryOutputPath(stage.getContext().getStagingDir().toString()) .setPlanJson(CoreGsonHelper.toJson(stage.getBlock().getPlan(), LogicalNode.class)) .setShuffleType(shuffleType); //Set assigned worker to stage if (!stage.getAssignedWorkerMap().containsKey(request.getWorker().getId())) { stage.getAssignedWorkerMap().put(request.getWorker().getId(), NetUtils.createSocketAddr(request.getWorker().getHost(), request.getWorker().getPeerRpcPort())); } done.run(ebRequestProto.build()); } else { controller.setFailed("Can't find query. request: " + request); } }
@Override public void getExecutionBlockContext(RpcController controller, ExecutionBlockContextRequest request, RpcCallback<ExecutionBlockContextResponse> done) { QueryMasterTask queryMasterTask = queryMaster.getQueryMasterTask( new QueryId(request.getExecutionBlockId().getQueryId())); if (queryMasterTask != null) { Stage stage = queryMasterTask.getQuery().getStage(new ExecutionBlockId(request.getExecutionBlockId())); // first request with starting ExecutionBlock PlanProto.ShuffleType shuffleType = stage.getDataChannel().getShuffleType(); ExecutionBlockContextResponse.Builder ebRequestProto = ExecutionBlockContextResponse.newBuilder(); ebRequestProto.setExecutionBlockId(request.getExecutionBlockId()) .setQueryContext(stage.getContext().getQueryContext().getProto()) .setQueryOutputPath(stage.getContext().getStagingDir().toString()) .setPlanJson(CoreGsonHelper.toJson(stage.getBlock().getPlan(), LogicalNode.class)) .setShuffleType(shuffleType); //Set assigned worker to stage if (!stage.getAssignedWorkerMap().containsKey(request.getWorker().getId())) { stage.getAssignedWorkerMap().put(request.getWorker().getId(), NetUtils.createSocketAddr(request.getWorker().getHost(), request.getWorker().getPeerRpcPort())); } done.run(ebRequestProto.build()); } else { controller.setFailed("Can't find query. request: " + request); } }