Example usage for weka.experiment TaskStatusInfo TO_BE_RUN

List of usage examples for weka.experiment TaskStatusInfo TO_BE_RUN

Introduction

In this page you can find the example usage for weka.experiment TaskStatusInfo TO_BE_RUN.

Prototype

int TO_BE_RUN

To view the source code for weka.experiment TaskStatusInfo TO_BE_RUN.

Click Source Link

Usage

From source file:milk.experiment.MIRemoteExperiment.java

License:Open Source License

/**
   * Launch a sub experiment on a remote host
   * @param wexp the index of the sub experiment to launch
   * @param ah the index of the available host to launch on
   *//*from  w  w w .ja v  a2  s  . c  o  m*/
  public void launchNext(final int wexp, final int ah) {

      Thread subExpThread;
      subExpThread = new Thread() {
          public void run() {
              m_remoteHostsStatus[ah] = IN_USE;
              m_subExpComplete[wexp] = TaskStatusInfo.PROCESSING;
              MIRemoteExperimentSubTask expSubTsk = new MIRemoteExperimentSubTask();
              expSubTsk.setExperiment(m_subExperiments[wexp]);
              String subTaskType = (getSplitByDataSet())
                      ? "dataset :" + ((File) m_subExperiments[wexp].getDatasets().elementAt(0)).getName()
                      : "run :" + m_subExperiments[wexp].getRunLower();
              try {
                  String name = "//" + ((String) m_remoteHosts.elementAt(ah)) + "/RemoteEngine";
                  Compute comp = (Compute) Naming.lookup(name);
                  // assess the status of the sub-exp
                  notifyListeners(false, true, false,
                          "Starting " + subTaskType + " on host " + ((String) m_remoteHosts.elementAt(ah)));
                  Object subTaskId = comp.executeTask(expSubTsk);
                  boolean finished = false;
                  TaskStatusInfo is = null;
                  while (!finished) {
                      try {
                          Thread.sleep(2000);

                          TaskStatusInfo cs = (TaskStatusInfo) comp.checkStatus(subTaskId);
                          if (cs.getExecutionStatus() == TaskStatusInfo.FINISHED) {
                              // push host back onto queue and try launching any waiting 
                              // sub-experiments
                              notifyListeners(false, true, false, cs.getStatusMessage());
                              m_remoteHostsStatus[ah] = AVAILABLE;
                              incrementFinished();
                              availableHost(ah);
                              finished = true;
                          } else if (cs.getExecutionStatus() == TaskStatusInfo.FAILED) {
                              // a non connection related error---possibly host doesn't have
                              // access to data sets or security policy is not set up
                              // correctly or classifier(s) failed for some reason
                              notifyListeners(false, true, false, cs.getStatusMessage());
                              m_remoteHostsStatus[ah] = SOME_OTHER_FAILURE;
                              m_subExpComplete[wexp] = TaskStatusInfo.FAILED;
                              notifyListeners(false, true, false, subTaskType + " " + cs.getStatusMessage()
                                      + ". Scheduling for execution on another host.");
                              incrementFailed(ah);
                              // push experiment back onto queue
                              waitingExperiment(wexp);
                              // push host back onto queue and try launching any waiting 
                              // sub-experiments. Host is pushed back on the queue as the
                              // failure may be temporary---eg. with InstantDB using the
                              // RMI bridge, two or more threads may try to create the
                              // experiment index or results table simultaneously; all but
                              // one will throw an exception. These hosts are still usable
                              // however.
                              availableHost(ah);
                              finished = true;
                          } else {
                              if (is == null) {
                                  is = cs;
                                  notifyListeners(false, true, false, cs.getStatusMessage());
                              } else {
                                  if (cs.getStatusMessage().compareTo(is.getStatusMessage()) != 0) {

                                      notifyListeners(false, true, false, cs.getStatusMessage());
                                  }
                                  is = cs;
                              }
                          }
                      } catch (InterruptedException ie) {
                      }
                  }

              } catch (Exception ce) {
                  m_remoteHostsStatus[ah] = CONNECTION_FAILED;
                  m_subExpComplete[wexp] = TaskStatusInfo.TO_BE_RUN;
                  System.err.println(ce);
                  ce.printStackTrace();
                  notifyListeners(false, true, false, "Connection to " + ((String) m_remoteHosts.elementAt(ah))
                          + " failed. Scheduling " + subTaskType + " for execution on another host.");
                  checkForAllFailedHosts();
                  waitingExperiment(wexp);
              } finally {
                  if (isInterrupted()) {
                      System.err.println("Sub exp Interupted!");
                  }
              }
          }
      };
      subExpThread.setPriority(Thread.MIN_PRIORITY);
      subExpThread.start();
  }

From source file:milk.experiment.MIRemoteExperimentSubTask.java

License:Open Source License

public MIRemoteExperimentSubTask() {
    m_result.setStatusMessage("Not running.");
    m_result.setExecutionStatus(TaskStatusInfo.TO_BE_RUN);
}