diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py index 0a48f07f8d14a7bfed4feef1544706449bab2d23..07ebb2a5c1415da33eb7127f00579b1a00dea70c 100644 --- a/beat/web/backend/models.py +++ b/beat/web/backend/models.py @@ -548,13 +548,23 @@ class Job(models.Model): # lock self - avoids concurrent update from scheduler/worker subsystem Job.objects.select_for_update().filter(pk=self.pk) - # checks for the presence of output caches - if they exist, skip - # and update related blocks + # checks for the presence of output caches - if they exist and + # checksum, skip and update related blocks if all([k.exists() for k in self.block.outputs.all()]): - self.status = Job.SKIPPED - self._cascade_updates() #to similar blocks - self.save() - return + if all([k.index_checksums() for k in self.block.outputs.all()]): + self.status = Job.SKIPPED + self.split_errors = 0 + self.end_date = datetime.datetime.now() + self.save() + self._cascade_updates() #to similar blocks + self.block._update_state() + return + else: + logger.warning("Trying to make block `%s' runnable, but " \ + "indexes do not checksum - waiting...", self.block) + self.split_errors += 1 + self.save() + return # else, flag it as runnable self.runnable_date = datetime.datetime.now()