diff options
| author | Fabien Meghazi <fme@odoo.com> | 2018-01-26 18:31:50 +0100 |
|---|---|---|
| committer | Fabien Meghazi <fme@odoo.com> | 2018-05-18 14:20:35 +0200 |
| commit | c60b22335be6358307facbe665bbdb3d7f8a435e (patch) | |
| tree | 6897bdfbce4fe3134d74c0143a8b03f9feab3baf | |
| parent | abda3464edc40b624ee070a92ff506e708f13dc3 (diff) | |
[FIX] base: honor registry/cache signaling for multiple threaded servers
Before this patch the registry and cache signaling was only activated
for PreforkServer. In case Odoo was deployed in a multi process/multi
threaded architecture the signaling was not ensured, causing registry
de-synchronisation amongst threaded servers.
| -rw-r--r-- | odoo/modules/registry.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py index 50a0be95986..1d05ec466d5 100644 --- a/odoo/modules/registry.py +++ b/odoo/modules/registry.py @@ -127,7 +127,7 @@ class Registry(Mapping): # Indicates that the registry is self.ready = False - # Inter-process signaling (used only when odoo.multi_process is True): + # 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 @@ -357,7 +357,7 @@ class Registry(Mapping): def setup_signaling(self): """ Setup the inter-process signaling on this registry. """ - if not odoo.multi_process: + if self.in_test_mode(): return with self.cursor() as cr: @@ -383,7 +383,7 @@ class Registry(Mapping): """ Check whether the registry has changed, and performs all necessary operations to update the registry. Return an up-to-date registry. """ - if not odoo.multi_process: + if self.in_test_mode(): return self with closing(self.cursor()) as cr: @@ -409,7 +409,7 @@ class Registry(Mapping): def signal_registry_change(self): """ Notifies other processes that the registry has changed. """ - if odoo.multi_process: + if not self.in_test_mode(): _logger.info("Registry changed, signaling through the database") with closing(self.cursor()) as cr: cr.execute("select nextval('base_registry_signaling')") @@ -417,7 +417,7 @@ class Registry(Mapping): def signal_caches_change(self): """ Notifies other processes if caches have been invalidated. """ - if odoo.multi_process and self.cache_cleared: + if self.cache_cleared and not self.in_test_mode(): # signal it through the database to other processes _logger.info("At least one model cache has been invalidated, signaling through the database.") with closing(self.cursor()) as cr: |
