summaryrefslogtreecommitdiff
path: root/odoo/modules
diff options
context:
space:
mode:
authorFabien Meghazi <fme@odoo.com>2018-01-26 18:31:50 +0100
committerFabien Meghazi <fme@odoo.com>2018-05-18 14:20:35 +0200
commitc60b22335be6358307facbe665bbdb3d7f8a435e (patch)
tree6897bdfbce4fe3134d74c0143a8b03f9feab3baf /odoo/modules
parentabda3464edc40b624ee070a92ff506e708f13dc3 (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.
Diffstat (limited to 'odoo/modules')
-rw-r--r--odoo/modules/registry.py10
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: