From fa5100cb2a43bd114a904b833d7c4edc45d6c639 Mon Sep 17 00:00:00 2001 From: niphlod Date: Wed, 3 Sep 2014 21:09:09 +0200 Subject: [PATCH 1/2] avoid multiple cascade paths --- gluon/scheduler.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gluon/scheduler.py b/gluon/scheduler.py index 3bbef86c..63110e31 100644 --- a/gluon/scheduler.py +++ b/gluon/scheduler.py @@ -96,7 +96,7 @@ IDENTIFIER = "%s#%s" % (socket.gethostname(),os.getpid()) logger = logging.getLogger('web2py.scheduler.%s' % IDENTIFIER) from gluon import DAL, Field, IS_NOT_EMPTY, IS_IN_SET, IS_NOT_IN_DB -from gluon import IS_INT_IN_RANGE, IS_DATETIME +from gluon import IS_INT_IN_RANGE, IS_DATETIME, IS_IN_DB from gluon.utils import web2py_uuid from gluon.storage import Storage @@ -671,7 +671,10 @@ class Scheduler(MetaScheduler): db.define_table( 'scheduler_task_deps', Field('job_name', default='job_0'), - Field('task_parent', 'reference scheduler_task'), + Field('task_parent', 'integer', + requires=IS_IN_DB(db, 'scheduler_task.id', + '%(task_name)s') + ), Field('task_child', 'reference scheduler_task'), Field('can_visit', 'boolean', default=False), migrate=self.__get_migrate('scheduler_task_deps', migrate) From 1456c0da1ebabb65c8c5bf29bd9b79f2c7f1f280 Mon Sep 17 00:00:00 2001 From: niphlod Date: Wed, 3 Sep 2014 21:23:24 +0200 Subject: [PATCH 2/2] references can be long too --- gluon/scheduler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gluon/scheduler.py b/gluon/scheduler.py index 63110e31..32027691 100644 --- a/gluon/scheduler.py +++ b/gluon/scheduler.py @@ -1314,7 +1314,7 @@ class Scheduler(MetaScheduler): """ from gluon.dal import Query sr, st = self.db.scheduler_run, self.db.scheduler_task - if isinstance(ref, int): + if isinstance(ref, (int, long)): q = st.id == ref elif isinstance(ref, str): q = st.uuid == ref @@ -1365,7 +1365,7 @@ class Scheduler(MetaScheduler): Experimental """ st, sw = self.db.scheduler_task, self.db.scheduler_worker - if isinstance(ref, int): + if isinstance(ref, (int, long)): q = st.id == ref elif isinstance(ref, str): q = st.uuid == ref