From 4aeba0c12e0512e537178e6cba0993a11f001ec3 Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Tue, 21 Jan 2014 18:18:36 +0100 Subject: [PATCH] [FIX] modules: multi worker signaling initialize variables before loading registry bzr revid: dle@openerp.com-20140121171836-dxs7cvqcd9nxytu1 --- openerp/modules/registry.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index a18bd4677fb..853fab0904d 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -145,7 +145,7 @@ class Registry(object): @classmethod def setup_multi_process_signaling(cls, cr): if not openerp.multi_process: - return + return None, None # Inter-process signaling: # The `base_registry_signaling` sequence indicates the whole registry @@ -158,6 +158,16 @@ class Registry(object): cr.execute("""SELECT nextval('base_registry_signaling')""") cr.execute("""CREATE SEQUENCE base_cache_signaling INCREMENT BY 1 START WITH 1""") cr.execute("""SELECT nextval('base_cache_signaling')""") + + cr.execute(""" + SELECT base_registry_signaling.last_value, + base_cache_signaling.last_value + FROM base_registry_signaling, base_cache_signaling""") + r, c = cr.fetchone() + _logger.debug("Multiprocess load registry signaling: [Registry: # %s] "\ + "[Cache: # %s]", + r, c) + return r, c @contextmanager def cursor(self, auto_commit=True): @@ -215,6 +225,10 @@ class RegistryManager(object): cls.delete(db_name) cls.registries[db_name] = registry try: + with registry.cursor() as cr: + seq_registry, seq_cache = Registry.setup_multi_process_signaling(cr) + registry.base_registry_signaling_sequence = seq_registry + registry.base_cache_signaling_sequence = seq_cache # This should be a method on Registry openerp.modules.load_modules(registry.db, force_demo, status, update_module) except Exception: @@ -228,7 +242,6 @@ class RegistryManager(object): cr = registry.db.cursor() try: - Registry.setup_multi_process_signaling(cr) registry.do_parent_store(cr) registry.get('ir.actions.report.xml').register_all(cr) cr.commit()