default QueryResult<Job> get(long jobId, QueryOptions options) throws CatalogDBException { Query query = new Query(QueryParams.UID.key(), jobId); QueryResult<Job> jobQueryResult = get(query, options); if (jobQueryResult == null || jobQueryResult.getResult().size() == 0) { throw CatalogDBException.uidNotFound("Job", jobId); } return jobQueryResult; }
QueryResult<Job> runningJobs = jobDBAdaptor.get(RUNNING_JOBS_QUERY, QUERY_OPTIONS); logger.debug("Checking running jobs. {} running jobs found", runningJobs.getNumResults()); for (Job job : runningJobs.getResult()) { QueryResult<Job> queuedJobs = jobDBAdaptor.get(QUEUED_JOBS_QUERY, QUERY_OPTIONS); logger.debug("Checking queued jobs. {} queued jobs found", queuedJobs.getNumResults()); for (Job job : queuedJobs.getResult()) { QueryResult<Job> preparedJobs = jobDBAdaptor.get(PREPARED_JOBS_QUERY, QUERY_OPTIONS_LIMIT_1); if (preparedJobs != null && preparedJobs.getNumResults() > 0) { if (getRunningOrQueuedJobs() < maxConcurrentIndexJobs) {
private long getRunningOrQueuedJobs() throws CatalogException { Query runningJobsQuery = new Query() .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Arrays.asList(Job.JobStatus.RUNNING, Job.JobStatus.QUEUED)) .append(JobDBAdaptor.QueryParams.TYPE.key(), Job.Type.INDEX); return jobDBAdaptor.get(runningJobsQuery, QueryOptions.empty()).getNumTotalResults(); }
@Test public void getJobTest() throws CatalogException { long studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); Job job = catalogJobDBAdaptor.insert(new Job("name", user3.getId(), "", "", "", new File().setUid(4), Collections.emptyList(), 1), studyId, null).first(); long jobId = job.getUid(); job = catalogJobDBAdaptor.get(jobId, null).first(); System.out.println(job); try { catalogJobDBAdaptor.get(-1, null); fail("error: expected exception"); } catch (CatalogDBException e) { System.out.println("correct exception: " + e); } }
.append(JobDBAdaptor.QueryParams.INPUT_UID.key(), resourceList) .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Constants.ALL_STATUS); QueryResult<Job> jobInputFiles = jobDBAdaptor.get(query, options); .append(JobDBAdaptor.QueryParams.OUTPUT_UID.key(), resourceList) .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Constants.ALL_STATUS); QueryResult<Job> jobOutputFiles = jobDBAdaptor.get(query, options); .append(JobDBAdaptor.QueryParams.OUT_DIR_UID.key(), resourceList) .append(JobDBAdaptor.QueryParams.STATUS_NAME.key(), Constants.ALL_STATUS); QueryResult<Job> jobOutDirFolders = jobDBAdaptor.get(query, options);
@Override Job smartResolutor(long studyUid, String entry, String user) throws CatalogException { Query query = new Query() .append(JobDBAdaptor.QueryParams.STUDY_UID.key(), studyUid); if (UUIDUtils.isOpenCGAUUID(entry)) { query.put(JobDBAdaptor.QueryParams.UUID.key(), entry); } else { query.put(JobDBAdaptor.QueryParams.ID.key(), entry); } QueryOptions options = new QueryOptions(QueryOptions.INCLUDE, Arrays.asList( JobDBAdaptor.QueryParams.UUID.key(), JobDBAdaptor.QueryParams.UID.key(), JobDBAdaptor.QueryParams.STUDY_UID.key(), JobDBAdaptor.QueryParams.ID.key(), JobDBAdaptor.QueryParams.STATUS.key())); QueryResult<Job> jobQueryResult = jobDBAdaptor.get(query, options, user); if (jobQueryResult.getNumResults() == 0) { jobQueryResult = jobDBAdaptor.get(query, options); if (jobQueryResult.getNumResults() == 0) { throw new CatalogException("Job " + entry + " not found"); } else { throw new CatalogAuthorizationException("Permission denied. " + user + " is not allowed to see the job " + entry); } } else if (jobQueryResult.getNumResults() > 1) { throw new CatalogException("More than one job found based on " + entry); } else { return jobQueryResult.first(); } }
@Test public void deleteJobTest() throws CatalogException { long studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); Job job = catalogJobDBAdaptor.insert(new Job("name", user3.getId(), "", "", "", new File().setUid(4), Collections.emptyList(), 1), studyId, null).first(); long jobId = job.getUid(); assertEquals(Job.JobStatus.PREPARED, job.getStatus().getName()); catalogJobDBAdaptor.delete(jobId); thrown.expect(CatalogDBException.class); thrown.expectMessage("not exist"); catalogJobDBAdaptor.get(jobId, QueryOptions.empty()); }
@Test public void SetVisitedJob() throws CatalogException { long studyId = user3.getProjects().get(0).getStudies().get(0).getUid(); Job jobBefore = catalogJobDBAdaptor.insert(new Job("name", user3.getId(), "", "", "", new File().setUid(4), Collections.emptyList(), 1), studyId, null).first(); long jobId = jobBefore.getUid(); assertTrue(!jobBefore.isVisited()); ObjectMap params = new ObjectMap(JobDBAdaptor.QueryParams.VISITED.key(), true); catalogJobDBAdaptor.update(jobBefore.getUid(), params, QueryOptions.empty()); Job jobAfter = catalogJobDBAdaptor.get(jobId, null).first(); assertTrue(jobAfter.isVisited()); }
@Override public QueryResult<Job> get(String studyStr, Query query, QueryOptions options, String sessionId) throws CatalogException { query = ParamUtils.defaultObject(query, Query::new); options = ParamUtils.defaultObject(options, QueryOptions::new); String userId = userManager.getUserId(sessionId); Study study = catalogManager.getStudyManager().resolveId(studyStr, userId); query.put(JobDBAdaptor.QueryParams.STUDY_UID.key(), study.getUid()); fixQueryObject(study, query, sessionId); QueryResult<Job> jobQueryResult = jobDBAdaptor.get(query, options, userId); if (jobQueryResult.getNumResults() == 0 && query.containsKey(JobDBAdaptor.QueryParams.UID.key())) { List<Long> idList = query.getAsLongList(JobDBAdaptor.QueryParams.UID.key()); for (Long myId : idList) { authorizationManager.checkJobPermission(study.getUid(), myId, userId, JobAclEntry.JobPermissions.VIEW); } } return jobQueryResult; }