List of usage examples for weka.experiment TaskStatusInfo getExecutionStatus
public int getExecutionStatus()
From source file:core.utils.ui.RemoteEngine.java
License:Open Source License
/** * Returns status information on a particular task * * @param taskId the ID of the task to check * @return a <code>TaskStatusInfo</code> encapsulating task status info * @exception Exception if an error occurs *///from ww w. j av a 2 s . com public Object checkStatus(Object taskId) throws Exception { TaskStatusInfo inf = (TaskStatusInfo) m_TaskStatus.get(taskId); if (inf == null) { throw new Exception("RemoteEngine (" + m_HostName + ") : Task not found."); } TaskStatusInfo result = new TaskStatusInfo(); result.setExecutionStatus(inf.getExecutionStatus()); result.setStatusMessage(inf.getStatusMessage()); result.setTaskResult(inf.getTaskResult()); if (inf.getExecutionStatus() == TaskStatusInfo.FINISHED || inf.getExecutionStatus() == TaskStatusInfo.FAILED) { System.err.println("Finished/failed Task id : " + taskId + " checked by client. Removing."); inf.setTaskResult(null); inf = null; m_TaskStatus.remove(taskId); } inf = null; return result; }
From source file:core.utils.ui.RemoteEngine.java
License:Open Source License
/** * Checks to see if there are any waiting tasks, and if no task is * currently running starts a waiting task. *//*from w ww . j a v a2 s .c o m*/ private void startTask() { if (m_TaskRunning == false && m_TaskQueue.size() > 0) { Thread activeTaskThread; activeTaskThread = new Thread() { public void run() { m_TaskRunning = true; Task currentTask = (Task) m_TaskQueue.pop(); String taskId = (String) m_TaskIdQueue.pop(); TaskStatusInfo tsi = (TaskStatusInfo) m_TaskStatus.get(taskId); tsi.setExecutionStatus(TaskStatusInfo.PROCESSING); tsi.setStatusMessage("RemoteEngine (" + m_HostName + ") : task " + taskId + " running..."); try { System.err.println("Launching task id : " + taskId + "..."); currentTask.execute(); TaskStatusInfo runStatus = currentTask.getTaskStatus(); tsi.setExecutionStatus(runStatus.getExecutionStatus()); tsi.setStatusMessage( "RemoteExperiment (" + m_HostName + ") " + runStatus.getStatusMessage()); tsi.setTaskResult(runStatus.getTaskResult()); } catch (Error er) { // Object initialization can raise Error, which are not subclass of Exception tsi.setExecutionStatus(TaskStatusInfo.FAILED); if (er.getCause() instanceof java.security.AccessControlException) { tsi.setStatusMessage("RemoteEngine (" + m_HostName + ") : security error, check remote policy file."); System.err.println("Task id " + taskId + " Failed! Check remote policy file"); } else { tsi.setStatusMessage( "RemoteEngine (" + m_HostName + ") : unknown initialization error."); System.err.println("Task id " + taskId + " Unknown initialization error"); } } catch (Exception ex) { tsi.setExecutionStatus(TaskStatusInfo.FAILED); if (ex instanceof java.io.FileNotFoundException) { tsi.setStatusMessage("RemoteEngine (" + m_HostName + ") : " + ex.getMessage()); System.err.println("Task id " + taskId + " Failed, " + ex.getMessage()); } else { tsi.setStatusMessage("RemoteEngine (" + m_HostName + ") : task " + taskId + " failed."); System.err.println("Task id " + taskId + " Failed!"); } } finally { if (m_TaskStatus.size() == 0) { purgeClasses(); } m_TaskRunning = false; // start any waiting tasks startTask(); } } }; activeTaskThread.setPriority(Thread.MIN_PRIORITY); activeTaskThread.start(); } }
From source file:core.utils.ui.RemoteEngine.java
License:Open Source License
/** * Checks the hash table for failed/finished tasks. Any that have been * around for an @seeCLEANUPTIMEOUT or more are removed. Clients are expected to check * on the status of their remote tasks. Checking on the status of a * finished/failed task will remove it from the hash table, therefore * any failed/finished tasks left lying around for more than an hour * suggest that their client has died../* w w w . j av a 2 s .c o m*/ * */ private void purge() { Enumeration keys = m_TaskStatus.keys(); long currentTime = System.currentTimeMillis(); System.err.println("RemoteEngine purge. Current time : " + currentTime); while (keys.hasMoreElements()) { String taskId = (String) keys.nextElement(); System.err.print("Examining task id : " + taskId + "... "); String timeString = taskId.substring(0, taskId.indexOf(':')); long ts = Long.valueOf(timeString).longValue(); if (currentTime - ts > CLEANUPTIMEOUT) { TaskStatusInfo tsi = (TaskStatusInfo) m_TaskStatus.get(taskId); if ((tsi != null) && (tsi.getExecutionStatus() == TaskStatusInfo.FINISHED || tsi.getExecutionStatus() == TaskStatusInfo.FAILED)) { System.err.println("\nTask id : " + taskId + " has gone stale. Removing."); m_TaskStatus.remove(taskId); tsi.setTaskResult(null); tsi = null; } } else { System.err.println("ok."); } } if (m_TaskStatus.size() == 0) { purgeClasses(); } }
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 www. j a v a 2s. 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(); }