-
- Downloads
[FIX] registry: make invalidation flags thread-specific
The registry attributes 'registry_invalidated' and 'cache_invalidated' are used to flag that the current request has modified the registry or invalidated the ormcache, respectively. This provides a simple yet efficient way to signal registry changes or cache invalidations to other workers. However, those flags were not meant to be used with multi-threaded workers. For instance, a thread may signal registry changes that are actually made by another thread. It can also happen that a thread changes the registry, which makes another thread crash (like a thread modifying a dict while another one iterates over it), and the latter will reset the registry to its original state because it misinterprets the registry changes as its own changes. The situation can even get worse, making threads crash in cascade and eventually leaving the registry in an inconsistent state. When this happens, the worker is broken and has to be manually restarted. The fix consists in making those flags thread-specific. This does not prevent thread crashing because of concurrent changes, but at least it avoids leaving the worker in a broken state. closes odoo/odoo#77244 X-original-commit: cdbd315f Signed-off-by:Raphael Collet (rco) <rco@openerp.com>
Please register or sign in to comment