diff options
-rw-r--r-- | rpki/rpkid.py | 12 | ||||
-rw-r--r-- | rpki/rpkid_tasks.py | 15 |
2 files changed, 19 insertions, 8 deletions
diff --git a/rpki/rpkid.py b/rpki/rpkid.py index a518797c..539946a4 100644 --- a/rpki/rpkid.py +++ b/rpki/rpkid.py @@ -145,7 +145,7 @@ class main(object): self.cfg.getint("initial-delay-max", 120)) # Should be much longer in production - self.cron_period = self.cfg.getint("cron-period", 120) + self.cron_period = self.cfg.getint("cron-period", 900) if self.use_internal_cron: logger.debug("Scheduling initial cron pass in %s seconds", self.initial_delay) @@ -263,12 +263,12 @@ class main(object): yield tornado.gen.sleep(self.initial_delay) while True: logger.debug("cron_loop(): Running") - yield self.cron_run() + yield self.cron_run(wait = False) logger.debug("cron_loop(): Sleeping %d seconds", self.cron_period) yield tornado.gen.sleep(self.cron_period) @tornado.gen.coroutine - def cron_run(self): + def cron_run(self, wait): """ Schedule periodic tasks and wait for them to finish. """ @@ -282,9 +282,11 @@ class main(object): else: tasks = tuple(task for tenant in tenants for task in tenant.cron_tasks(self)) self.task_add(tasks) - futures = [task.wait() for task in tasks] + if wait: + futures = [task.wait() for task in tasks] self.task_run() - yield futures + if wait: + yield futures logger.info("Finished cron run started at %s", now) @tornado.gen.coroutine diff --git a/rpki/rpkid_tasks.py b/rpki/rpkid_tasks.py index afe518fa..11df3b73 100644 --- a/rpki/rpkid_tasks.py +++ b/rpki/rpkid_tasks.py @@ -59,10 +59,12 @@ class AbstractTask(object): """ ## @var timeslice - # How long before a task really should consider yielding the CPU to - # let something else run. + # How long before a task really should consider yielding the CPU + # to let something else run. Should this be something we can + # configure from rpki.conf? - timeslice = rpki.sundial.timedelta(seconds = 15) + #timeslice = rpki.sundial.timedelta(seconds = 15) + timeslice = rpki.sundial.timedelta(seconds = 60) ## @var serialize # Lock to force prevent more than one task from running at a time. @@ -365,6 +367,9 @@ class UpdateChildrenTask(AbstractTask): except: logger.exception("%r: Couldn't update %r, skipping", self, child) + finally: + child_certs = irdb_resources = ca_detail = old_resources = new_resources = old_aia = new_aia = None + try: yield publisher.call_pubd() except: @@ -432,8 +437,12 @@ class UpdateROAsTask(AbstractTask): logger.debug("%r: Found existing %r", self, roa) updates.append(roa) + r_msg = seen = None + orphans.extend(roas.itervalues()) + roas = None + while updates: if self.overdue: yield self.publish() |