static void execute(CatalogManager catalogManager, Job job, String sessionId) throws ExecutionException, IOException, CatalogException { // read execution param // String defaultJobExecutor = Config.getAnalysisProperties().getProperty(OPENCGA_ANALYSIS_JOB_EXECUTOR, "LOCAL").trim().toUpperC(); String defaultJobExecutor = "LOCAL"; execute(catalogManager, job, sessionId, job.getResourceManagerAttributes().getOrDefault("executor", defaultJobExecutor).toString()); }
protected ExecutorConfig getExecutorConfig(Job job) { ExecutorConfig executorConfig = null; if (job != null && job.getResourceManagerAttributes() != null) { executorConfig = new ExecutorConfig(); if (job.getResourceManagerAttributes().get(STDOUT) != null) { executorConfig.setStdout(job.getResourceManagerAttributes().get(STDOUT).toString()); } if (job.getResourceManagerAttributes().get(STDERR) != null) { executorConfig.setStderr(job.getResourceManagerAttributes().get(STDERR).toString()); } if (job.getResourceManagerAttributes().get(OUTDIR) != null) { executorConfig.setOutdir(job.getResourceManagerAttributes().get(OUTDIR).toString()); } if (job.getResourceManagerAttributes().get(TIMEOUT) != null) { executorConfig.setTimeout(Integer.parseInt(job.getResourceManagerAttributes().get(TIMEOUT).toString())); } if (job.getResourceManagerAttributes().get(MAX_MEM) != null) { executorConfig.setMaxMem(Integer.parseInt(job.getResourceManagerAttributes().get(MAX_MEM).toString())); } if (job.getResourceManagerAttributes().get(NUM_THREADS) != null) { executorConfig.setNumThreads(Integer.parseInt(job.getResourceManagerAttributes().get(NUM_THREADS).toString())); } } return executorConfig; }
@Override public String status(Job job) throws Exception { String status = SgeManager.status(Objects.toString(job.getResourceManagerAttributes().get(Job.JOB_SCHEDULER_NAME))); switch (status) { case SgeManager.ERROR: case SgeManager.EXECUTION_ERROR: return Job.JobStatus.ERROR; case SgeManager.FINISHED: return Job.JobStatus.READY; case SgeManager.QUEUED: return Job.JobStatus.QUEUED; case SgeManager.RUNNING: case SgeManager.TRANSFERRED: return Job.JobStatus.RUNNING; case SgeManager.UNKNOWN: default: return job.getStatus().getName(); } } }
@Override protected String getStatus(Job job) { String status; try { status = SgeManager.status(Objects.toString(job.getResourceManagerAttributes().get(Job.JOB_SCHEDULER_NAME))); } catch (Exception e) { logger.error("Could not obtain the status of the job {} from SGE. Error: {}", job.getUid(), e.getMessage()); return Job.JobStatus.UNKNOWN; } switch (status) { case SgeManager.ERROR: case SgeManager.EXECUTION_ERROR: return Job.JobStatus.ERROR; case SgeManager.FINISHED: return Job.JobStatus.READY; case SgeManager.QUEUED: return Job.JobStatus.QUEUED; case SgeManager.RUNNING: case SgeManager.TRANSFERRED: return Job.JobStatus.RUNNING; case SgeManager.UNKNOWN: default: return job.getStatus().getName(); } }
if (job.getResourceManagerAttributes().containsKey("STDOUT")) { URI sout = Paths.get((String) job.getResourceManagerAttributes().get("STDOUT")).toUri(); com.setOutputOutputStream(ioManager.createOutputStream(sout, false)); if (job.getResourceManagerAttributes().containsKey("STDERR")) { URI serr = Paths.get((String) job.getResourceManagerAttributes().get("STDERR")).toUri(); com.setErrorOutputStream(ioManager.createOutputStream(serr, false));
job.getAttributes().put(Job.OPENCGA_TMP_DIR, path.toString()); job.getResourceManagerAttributes().put(AbstractExecutor.STDOUT, stdout); job.getResourceManagerAttributes().put(AbstractExecutor.STDERR, stderr); job.getResourceManagerAttributes().put(AbstractExecutor.OUTDIR, path.toString()); .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Job.JobStatus.QUEUED) .append(JobDBAdaptor.QueryParams.ATTRIBUTES.key(), job.getAttributes()) .append(JobDBAdaptor.QueryParams.RESOURCE_MANAGER_ATTRIBUTES.key(), job.getResourceManagerAttributes());
updateObjectMap.put(JobDBAdaptor.QueryParams.ATTRIBUTES.key(), job.getAttributes()); job.getResourceManagerAttributes().put(AbstractExecutor.STDOUT, stdout); job.getResourceManagerAttributes().put(AbstractExecutor.STDERR, stderr); job.getResourceManagerAttributes().put(AbstractExecutor.OUTDIR, path.toString()); updateObjectMap.put(JobDBAdaptor.QueryParams.RESOURCE_MANAGER_ATTRIBUTES.key(), job.getResourceManagerAttributes());
job.setExecution(ParamUtils.defaultObject(job.getExecution(), "")); job.setParams(ParamUtils.defaultObject(job.getParams(), HashMap::new)); job.setResourceManagerAttributes(ParamUtils.defaultObject(job.getResourceManagerAttributes(), HashMap::new)); job.setAttributes(ParamUtils.defaultObject(job.getAttributes(), HashMap::new)); job.setUserId(userId);