public static void processCluster()

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);
    }
  }