diff --git a/beat/web/backend/migrations/0002_scheduler_addons.py b/beat/web/backend/migrations/0002_scheduler_addons.py index 4d41a6597983b972a07c9c87f6c225645cd36fac..93525606a1de77ad93915a18d4ab44dea518e035 100644 --- a/beat/web/backend/migrations/0002_scheduler_addons.py +++ b/beat/web/backend/migrations/0002_scheduler_addons.py @@ -146,7 +146,7 @@ class Migration(migrations.Migration): name='Job', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('status', models.CharField(default=b'N', max_length=1, choices=[(b'N', b'Queued'), (b'P', b'Processing'), (b'C', b'Completed'), (b'F', b'Failed'), (b'S', b'Skipped'), (b'L', b'Cancelled')])), + ('status', models.CharField(default=b'N', max_length=1, choices=[(b'N', b'Queued'), (b'P', b'Processing'), (b'C', b'Completed'), (b'F', b'Failed'), (b'S', b'Skipped'), (b'L', b'Cancelled'), (b'K', b'Kill')])), ('runnable_date', models.DateTimeField(null=True, blank=True)), ('start_date', models.DateTimeField(null=True, blank=True)), ('end_date', models.DateTimeField(null=True, blank=True)), @@ -163,7 +163,7 @@ class Migration(migrations.Migration): ('split_index', models.PositiveIntegerField()), ('start_index', models.PositiveIntegerField(null=True)), ('end_index', models.PositiveIntegerField(null=True)), - ('status', models.CharField(default=b'N', max_length=1, choices=[(b'N', b'Queued'), (b'P', b'Processing'), (b'C', b'Completed'), (b'F', b'Failed'), (b'S', b'Skipped'), (b'L', b'Cancelled')])), + ('status', models.CharField(default=b'N', max_length=1, choices=[(b'N', b'Queued'), (b'P', b'Processing'), (b'C', b'Completed'), (b'F', b'Failed'), (b'S', b'Skipped'), (b'L', b'Cancelled'), (b'K', b'Kill')])), ('start_date', models.DateTimeField(null=True)), ('end_date', models.DateTimeField(null=True)), ('process_id', models.PositiveIntegerField(null=True)), diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py index 300dad3e0320a74124535dc67babe15ace6c01a5..887b37d4c38a87827bef3005aa8fc8d9ba37fe62 100644 --- a/beat/web/backend/models.py +++ b/beat/web/backend/models.py @@ -472,6 +472,7 @@ class Job(models.Model): FAILED = 'F' #Block.FAILED SKIPPED = 'S' #Block.SKIPPED CANCELLED = 'L' #Block.CANCELLED + KILL = 'K' #Job was asked to be killed STATUS = ( (QUEUED, 'Queued'), @@ -701,7 +702,8 @@ class Job(models.Model): elif (Job.PROCESSING in split_statuses) or \ (Job.QUEUED in split_statuses and \ - Job.COMPLETED in split_statuses): + Job.COMPLETED in split_statuses) or \ + (Job.KILL in split_statuses): self.status = Job.PROCESSING elif all([s == Job.SKIPPED for s in split_statuses]): @@ -925,8 +927,8 @@ class JobSplit(models.Model): JobSplit.objects.select_for_update().filter(pk=self.pk) # If this split is running, then wait - if self.status == Job.PROCESSING and (self.process_id is not None): - self.status = Job.CANCELLED + if self.status == Job.PROCESSING: + self.status = Job.KILL self.save() logger.info("Job split `%s' is currently processing. Waiting " \ "for worker to cancel split remotely.", self)