Example #1
0
 def _caretaker(self):
     self.log.info("Caretaker waiting on lock...")
     
     self.ct_lock.acquire()
     self.log.info("Caretaker Running...")
     dbI=self.db(self.databaseHost,self.databasePort,self.databaseInstance)
     incomplete = dbI.getincompletetasks()
     for task_id in incomplete:
         jobid = dbI.getjobid(task_id)
         jobrecord = dbI.getjob(jobid)
         #TODO get task record not job record
         job = Job().load(jobrecord)
         for task in job.state.tasks:
             if task.state.id == task_id and task.state.timeout and task.state.start_time:
                 if task.state.timeout < (time.time() - task.state.start_time):
                     self.log.info("Setting task {0} from job {1} as FAILED".format(task.state.id,job.state.id))
                     task.state.status = 'FAILED'
                     task.state.end_time = time.time()
                     job.state.status = 'FAILED'
                     job.state.end_time = time.time()                        
                     job.save()
                     dbI.updatejob(job)
     self.ct_lock.release()