示例#1
0
 /** @param jobEvent */
 public void observe(@Observes(notifyObserver = Reception.ALWAYS) JobEvent jobEvent) {
   if (jobEvent.getEvent() == JobLifecycleEvent.AGENT_STARTED) {
     JobInstance job = dao.findById(Integer.valueOf(jobEvent.getJobId()));
     for (EntityVersion version : job.getNotificationVersions()) {
       JobNotification not = notificationDao.findById(version.getObjectId());
       if (not != null
           && not.getLifecycleEvents() != null
           && not.getLifecycleEvents().contains(JobLifecycleEvent.AGENT_EXCESSIVE_CPU)) {
         LOG.info("Adding watches for job " + job.getId());
         addWatches(job, not);
         break;
       }
     }
   } else if (jobEvent.getEvent() == JobLifecycleEvent.JOB_FINISHED) {
     JobInstance job = dao.findById(Integer.valueOf(jobEvent.getJobId()));
     for (EntityVersion version : job.getNotificationVersions()) {
       JobNotification not = notificationDao.findById(version.getObjectId());
       if (not != null
           && not.getLifecycleEvents() != null
           && not.getLifecycleEvents().contains(JobLifecycleEvent.AGENT_EXCESSIVE_CPU)) {
         LOG.info("Adding watches for job " + job.getId());
         removeWatches(job, not);
         break;
       }
     }
   }
 }
示例#2
0
 /**
  * @param job
  * @return
  */
 private Set<Integer> getDataFileIds(JobInstance job) {
   DataFileDao dataFileDao = new DataFileDao();
   Set<Integer> ret = new HashSet<Integer>();
   for (EntityVersion version : job.getDataFileVersions()) {
     DataFile dataFile = dataFileDao.findRevision(version.getObjectId(), version.getVersionId());
     if (dataFile != null) {
       ret.add(dataFile.getId());
     } else {
       LOG.warn("Attempt to add dataFile that does not exist.");
     }
   }
   return ret;
 }
示例#3
0
 /**
  * @param job
  * @return
  */
 private Set<? extends Notification> getNotifications(JobInstance job) {
   HashSet<JobNotification> ret = new HashSet<JobNotification>();
   JobNotificationDao dao = new JobNotificationDao();
   for (EntityVersion version : job.getNotificationVersions()) {
     JobNotification notification =
         dao.findRevision(version.getObjectId(), version.getVersionId());
     if (notification != null) {
       ret.add(notification);
     } else {
       LOG.warn("Attempt to add Notification that does not exist.");
     }
   }
   return ret;
 }
示例#4
0
 private Set<? extends RegionRequest> getRegions(JobInstance job) {
   Set<JobRegion> ret = new HashSet<JobRegion>();
   JobRegionDao dao = new JobRegionDao();
   HashSet<VMRegion> regionSet = new HashSet<VMRegion>();
   for (EntityVersion version : job.getJobRegionVersions()) {
     JobRegion jobRegion = null;
     if (version.getObjectId() > 0 && version.getVersionId() > 0) {
       try {
         jobRegion = dao.findRevision(version.getObjectId(), version.getVersionId());
       } catch (Exception e) {
         LOG.error("Error getting region revision: " + e.toString(), e);
       }
     }
     if (jobRegion != null) {
       ret.add(fixJobRegion(jobRegion, job));
       if (regionSet.contains(jobRegion.getRegion())) {
         LOG.warn("attempt to add multiple regions to job");
       } else {
         regionSet.add(jobRegion.getRegion());
       }
     } else {
       LOG.warn(
           "Attempt to add jobRegion version that does not exist. id = "
               + version.getObjectId()
               + " : version = "
               + version.getVersionId());
       jobRegion = dao.findById(version.getObjectId());
       if (jobRegion != null) {
         ret.add(fixJobRegion(jobRegion, job));
         if (regionSet.contains(jobRegion.getRegion())) {
           LOG.warn("attempt to add multiple regions to job");
         } else {
           regionSet.add(jobRegion.getRegion());
         }
       } else {
         LOG.warn(
             "Cannot find job region with id "
                 + version.getObjectId()
                 + ". Returning current job Regions.");
         Workload workload = new WorkloadDao().findById(job.getWorkloadId());
         ret = workload.getJobConfiguration().getJobRegions();
         for (JobRegion region : ret) {
           fixJobRegion(region, job);
         }
         break;
         // throw new RuntimeException("Cannot find job region with id " + version.getObjectId());
       }
     }
   }
   ret = JobRegionDao.cleanRegions(ret);
   return ret;
 }