From b28d2c0a00ab0390f5c67e0e7ee152c7e6ec3baf Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 7 Mar 2012 14:05:26 +0100 Subject: [PATCH] [IMP] multi-process: moved signaling sequences to registry creation instead of base.sql. bzr revid: vmt@openerp.com-20120307130526-d7e67h51ba4t9vwn --- openerp/addons/base/base.sql | 10 ---------- openerp/modules/registry.py | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/openerp/addons/base/base.sql b/openerp/addons/base/base.sql index 06a13d311a2..409ce81b285 100644 --- a/openerp/addons/base/base.sql +++ b/openerp/addons/base/base.sql @@ -347,16 +347,6 @@ CREATE TABLE ir_model_data ( res_id integer, primary key(id) ); --- Inter-process signaling: --- The `base_registry_signaling` sequence indicates the whole registry --- must be reloaded. --- The `base_cache_signaling sequence` indicates all caches must be --- invalidated (i.e. cleared). -CREATE SEQUENCE base_registry_signaling INCREMENT BY 1 START WITH 1; -SELECT nextval('base_registry_signaling'); -CREATE SEQUENCE base_cache_signaling INCREMENT BY 1 START WITH 1; -SELECT nextval('base_cache_signaling'); - --------------------------------- -- Users --------------------------------- diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index bc04d455c6b..036f8f64a98 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -140,6 +140,23 @@ class Registry(object): def any_cache_cleared(self): return self._any_cache_cleared + @classmethod + def setup_multi_process_signaling(cls, cr): + if not openerp.multi_process: + return + + # Inter-process signaling: + # The `base_registry_signaling` sequence indicates the whole registry + # must be reloaded. + # The `base_cache_signaling sequence` indicates all caches must be + # invalidated (i.e. cleared). + cr.execute("""SELECT sequence_name FROM information_schema.sequences WHERE sequence_name='base_registry_signaling'""") + if not cr.fetchall(): + cr.execute("""CREATE SEQUENCE base_registry_signaling INCREMENT BY 1 START WITH 1""") + 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')""") + class RegistryManager(object): """ Model registries manager. @@ -189,6 +206,7 @@ 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()