From 18fd9fe0a8c963e3e093a9338e981064fb42caeb Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Tue, 28 Feb 2017 18:00:50 +0100 Subject: [PATCH] [FIX] server: avoid cron thread death In case an exception (programming, out of memory or any other unexpected failure), the cron_thread would crash and not recover until server restart. Issue #15666 was an example of failure. Courtesy of Nils Hamerlinck --- openerp/service/server.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/openerp/service/server.py b/openerp/service/server.py index c111af01093..d1f74cee2c0 100644 --- a/openerp/service/server.py +++ b/openerp/service/server.py @@ -262,8 +262,12 @@ class ThreadedServer(CommonServer): _logger.debug('cron%d polling for jobs', number) for db_name, registry in registries.iteritems(): while registry.ready: - acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name) - if not acquired: + try: + acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name) + if not acquired: + break + except Exception: + _logger.warning('cron%d encountered an Exception:', number, exc_info=True) break def cron_spawn(self):