in tajo-client/src/main/java/org/apache/tajo/client/TajoAdmin.java [212:340]
public static void processCluster(Writer writer, TajoClient client) throws ParseException, IOException,
ServiceException, SQLException {
List<WorkerResourceInfo> workerList = client.getClusterInfo();
int runningQueryMasterTasks = 0;
List<WorkerResourceInfo> liveWorkers = new ArrayList<WorkerResourceInfo>();
List<WorkerResourceInfo> deadWorkers = new ArrayList<WorkerResourceInfo>();
List<WorkerResourceInfo> decommissionWorkers = new ArrayList<WorkerResourceInfo>();
List<WorkerResourceInfo> liveQueryMasters = new ArrayList<WorkerResourceInfo>();
List<WorkerResourceInfo> deadQueryMasters = new ArrayList<WorkerResourceInfo>();
for (WorkerResourceInfo eachWorker : workerList) {
if(eachWorker.getQueryMasterMode() == true) {
if(eachWorker.getWorkerStatus().equals(WorkerStatus.LIVE.toString())) {
liveQueryMasters.add(eachWorker);
runningQueryMasterTasks += eachWorker.getNumQueryMasterTasks();
}
if(eachWorker.getWorkerStatus().equals(WorkerStatus.DEAD.toString())) {
deadQueryMasters.add(eachWorker);
}
}
if(eachWorker.getTaskRunnerMode() == true) {
if(eachWorker.getWorkerStatus().equals(WorkerStatus.LIVE.toString())) {
liveWorkers.add(eachWorker);
} else if(eachWorker.getWorkerStatus().equals(WorkerStatus.DEAD.toString())) {
deadWorkers.add(eachWorker);
} else if(eachWorker.getWorkerStatus().equals(WorkerStatus.DECOMMISSION.toString())) {
decommissionWorkers.add(eachWorker);
}
}
}
String fmtInfo = "%1$-5s %2$-5s %3$-5s%n";
String infoLine = String.format(fmtInfo, "Live", "Dead", "Tasks");
writer.write("Query Master\n");
writer.write("============\n\n");
writer.write(infoLine);
String line = String.format(fmtInfo, line5, line5, line5);
writer.write(line);
line = String.format(fmtInfo, liveQueryMasters.size(),
deadQueryMasters.size(), runningQueryMasterTasks);
writer.write(line);
writer.write("\n");
writer.write("Live QueryMasters\n");
writer.write("=================\n\n");
if (liveQueryMasters.isEmpty()) {
writer.write("No Live QueryMasters\n");
} else {
String fmtQueryMasterLine = "%1$-25s %2$-5s %3$-5s %4$-10s %5$-10s%n";
line = String.format(fmtQueryMasterLine, "QueryMaster", "Port", "Query",
"Heap", "Status");
writer.write(line);
line = String.format(fmtQueryMasterLine, line25, line5,
line5, line10, line10);
writer.write(line);
for (WorkerResourceInfo queryMaster : liveQueryMasters) {
String queryMasterHost = String.format("%s:%d",
queryMaster.getAllocatedHost(),
queryMaster.getQueryMasterPort());
String heap = String.format("%d MB", queryMaster.getMaxHeap()/1024/1024);
line = String.format(fmtQueryMasterLine, queryMasterHost,
queryMaster.getClientPort(),
queryMaster.getNumQueryMasterTasks(),
heap, queryMaster.getWorkerStatus());
writer.write(line);
}
writer.write("\n\n");
}
if (!deadQueryMasters.isEmpty()) {
writer.write("Dead QueryMasters\n");
writer.write("=================\n\n");
String fmtQueryMasterLine = "%1$-25s %2$-5s %3$-10s%n";
line = String.format(fmtQueryMasterLine, "QueryMaster", "Port", "Status");
writer.write(line);
line = String.format(fmtQueryMasterLine, line25, line5, line10);
writer.write(line);
for (WorkerResourceInfo queryMaster : deadQueryMasters) {
String queryMasterHost = String.format("%s:%d",
queryMaster.getAllocatedHost(),
queryMaster.getQueryMasterPort());
line = String.format(fmtQueryMasterLine, queryMasterHost,
queryMaster.getClientPort(),
queryMaster.getWorkerStatus());
writer.write(line);
}
writer.write("\n\n");
}
writer.write("Worker\n");
writer.write("======\n\n");
String fmtWorkerInfo = "%1$-5s %2$-5s%n";
String workerInfoLine = String.format(fmtWorkerInfo, "Live", "Dead");
writer.write(workerInfoLine);
line = String.format(fmtWorkerInfo, line5, line5);
writer.write(line);
line = String.format(fmtWorkerInfo, liveWorkers.size(), deadWorkers.size());
writer.write(line);
writer.write("\n");
writer.write("Live Workers\n");
writer.write("============\n\n");
if(liveWorkers.isEmpty()) {
writer.write("No Live Workers\n\n");
} else {
writeWorkerInfo(writer, liveWorkers);
}
writer.write("Dead Workers\n");
writer.write("============\n\n");
if(deadWorkers.isEmpty()) {
writer.write("No Dead Workers\n\n");
} else {
writeWorkerInfo(writer, deadWorkers);
}
}