aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rpki/rpkid.py12
-rw-r--r--rpki/rpkid_tasks.py15
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()