Search in sources :

Example 1 with HpcJobPreProcessTask

use of edu.cmu.tetradapp.app.hpc.task.HpcJobPreProcessTask in project tetrad by cmu-phil.

the class HpcJobManager method submitNewHpcJobToQueue.

public synchronized void submitNewHpcJobToQueue(final HpcJobInfo hpcJobInfo, final GeneralAlgorithmEditor generalAlgorithmEditor) {
    hpcJobInfoService.add(hpcJobInfo);
    LOGGER.debug("hpcJobInfo: id: " + hpcJobInfo.getId());
    HpcJobLog hpcJobLog = new HpcJobLog();
    hpcJobLog.setAddedTime(new Date(System.currentTimeMillis()));
    hpcJobLog.setHpcJobInfo(hpcJobInfo);
    hpcJobLogService.update(hpcJobLog);
    LOGGER.debug("HpcJobLog: id: " + hpcJobLog.getId());
    HpcJobLogDetail hpcJobLogDetail = new HpcJobLogDetail();
    hpcJobLogDetail.setAddedTime(new Date());
    hpcJobLogDetail.setHpcJobLog(hpcJobLog);
    // Pending
    hpcJobLogDetail.setJobState(-1);
    hpcJobLogDetail.setProgress("Pending");
    hpcJobLogDetailService.add(hpcJobLogDetail);
    LOGGER.debug("HpcJobLogDetail: id: " + hpcJobLogDetail.getId());
    hpcGraphResultMap.put(hpcJobInfo, generalAlgorithmEditor);
    // Put a new pre-process task into hpc job queue
    HpcJobPreProcessTask preProcessTask = new HpcJobPreProcessTask(hpcJobInfo);
    // Added a job to the pending list
    final HpcAccount hpcAccount = hpcJobInfo.getHpcAccount();
    Set<HpcJobInfo> hpcJobInfos = pendingHpcJobInfoMap.get(hpcAccount);
    if (hpcJobInfos == null) {
        hpcJobInfos = new LinkedHashSet<>();
    }
    hpcJobInfos.add(hpcJobInfo);
    pendingHpcJobInfoMap.put(hpcAccount, hpcJobInfos);
    executorService.execute(preProcessTask);
}
Also used : HpcJobPreProcessTask(edu.cmu.tetradapp.app.hpc.task.HpcJobPreProcessTask) HpcAccount(edu.pitt.dbmi.tetrad.db.entity.HpcAccount) HpcJobInfo(edu.pitt.dbmi.tetrad.db.entity.HpcJobInfo) HpcJobLogDetail(edu.pitt.dbmi.tetrad.db.entity.HpcJobLogDetail) HpcJobLog(edu.pitt.dbmi.tetrad.db.entity.HpcJobLog) Date(java.util.Date)

Example 2 with HpcJobPreProcessTask

use of edu.cmu.tetradapp.app.hpc.task.HpcJobPreProcessTask in project tetrad by cmu-phil.

the class HpcJobManager method resumePreProcessJobs.

private synchronized void resumePreProcessJobs() {
    // Lookup on DB for HpcJobInfo with status -1 (Pending)
    List<HpcJobInfo> pendingHpcJobInfo = hpcJobInfoService.findByStatus(-1);
    if (pendingHpcJobInfo != null) {
        for (HpcJobInfo hpcJobInfo : pendingHpcJobInfo) {
            LOGGER.debug("resumePreProcessJobs: " + hpcJobInfo.getAlgoId() + " : " + hpcJobInfo.getHpcAccount().getConnectionName() + " : " + hpcJobInfo.getAlgorithmParamRequest().getDatasetPath());
            final HpcAccount hpcAccount = hpcJobInfo.getHpcAccount();
            Set<HpcJobInfo> hpcJobInfos = pendingHpcJobInfoMap.get(hpcAccount);
            if (hpcJobInfos == null) {
                hpcJobInfos = new LinkedHashSet<>();
            }
            hpcJobInfos.add(hpcJobInfo);
            pendingHpcJobInfoMap.put(hpcAccount, hpcJobInfos);
            HpcJobPreProcessTask preProcessTask = new HpcJobPreProcessTask(hpcJobInfo);
            executorService.submit(preProcessTask);
        }
    } else {
        LOGGER.debug("resumePreProcessJobs: no pending jobs to be resumed");
    }
}
Also used : HpcJobPreProcessTask(edu.cmu.tetradapp.app.hpc.task.HpcJobPreProcessTask) HpcAccount(edu.pitt.dbmi.tetrad.db.entity.HpcAccount) HpcJobInfo(edu.pitt.dbmi.tetrad.db.entity.HpcJobInfo)

Aggregations

HpcJobPreProcessTask (edu.cmu.tetradapp.app.hpc.task.HpcJobPreProcessTask)2 HpcAccount (edu.pitt.dbmi.tetrad.db.entity.HpcAccount)2 HpcJobInfo (edu.pitt.dbmi.tetrad.db.entity.HpcJobInfo)2 HpcJobLog (edu.pitt.dbmi.tetrad.db.entity.HpcJobLog)1 HpcJobLogDetail (edu.pitt.dbmi.tetrad.db.entity.HpcJobLogDetail)1 Date (java.util.Date)1