[FIX] decimal_precision: avoid refreshing float precisions at each cache invalidation
Changing the decimal precision of float fields is a rare operation, while cache clearing occurs fairly frequently. Signaling a full registry change when the decimal precision is changed (instead of a mere cache change) is therefore a better trade-off, and more semantically correct as well. This way we avoid the decimal precision refresh for each invalidation. Registry invalidation implies cache invalidation.
This commit is contained in:
parent
8ce89736e9
commit
c87b9c6539
|
@ -53,7 +53,7 @@ class decimal_precision(orm.Model):
|
|||
for field in model._fields.values():
|
||||
if field.type == 'float':
|
||||
field._setup_digits(env)
|
||||
RegistryManager.signal_caches_change(cr.dbname)
|
||||
RegistryManager.signal_registry_change(cr.dbname)
|
||||
|
||||
def create(self, cr, uid, data, context=None):
|
||||
res = super(decimal_precision, self).create(cr, uid, data, context=context)
|
||||
|
|
|
@ -429,14 +429,6 @@ class RegistryManager(object):
|
|||
_logger.info("Invalidating all model caches after database signaling.")
|
||||
registry.clear_caches()
|
||||
registry.reset_any_cache_cleared()
|
||||
# One possible reason caches have been invalidated is the
|
||||
# use of decimal_precision.write(), in which case we need
|
||||
# to refresh fields.float columns.
|
||||
env = openerp.api.Environment(cr, SUPERUSER_ID, {})
|
||||
for model in registry.values():
|
||||
for field in model._fields.values():
|
||||
if field.type == 'float':
|
||||
field._setup_digits(env)
|
||||
registry.base_registry_signaling_sequence = r
|
||||
registry.base_cache_signaling_sequence = c
|
||||
finally:
|
||||
|
|
Loading…
Reference in New Issue