From 27344682a54438f2d52700a30095f88c25a32fa2 Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Wed, 27 Apr 2016 18:01:36 +0200 Subject: [PATCH] [backend] Add job state (kill) --- beat/web/backend/migrations/0002_scheduler_addons.py | 4 ++-- beat/web/backend/models.py | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/beat/web/backend/migrations/0002_scheduler_addons.py b/beat/web/backend/migrations/0002_scheduler_addons.py index 4d41a6597..93525606a 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 300dad3e0..887b37d4c 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) -- GitLab