From c4aeb7624f1a1c9941c857b904d9c05374a8a5e5 Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.anjos@idiap.ch> Date: Tue, 26 Apr 2016 17:18:59 +0200 Subject: [PATCH] [backend Improve block skipping strategy --- beat/web/backend/models.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py index 0a48f07f8..07ebb2a5c 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() -- GitLab