[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():
|
for field in model._fields.values():
|
||||||
if field.type == 'float':
|
if field.type == 'float':
|
||||||
field._setup_digits(env)
|
field._setup_digits(env)
|
||||||
RegistryManager.signal_caches_change(cr.dbname)
|
RegistryManager.signal_registry_change(cr.dbname)
|
||||||
|
|
||||||
def create(self, cr, uid, data, context=None):
|
def create(self, cr, uid, data, context=None):
|
||||||
res = super(decimal_precision, self).create(cr, uid, data, context=context)
|
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.")
|
_logger.info("Invalidating all model caches after database signaling.")
|
||||||
registry.clear_caches()
|
registry.clear_caches()
|
||||||
registry.reset_any_cache_cleared()
|
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_registry_signaling_sequence = r
|
||||||
registry.base_cache_signaling_sequence = c
|
registry.base_cache_signaling_sequence = c
|
||||||
finally:
|
finally:
|
||||||
|
|
Loading…
Reference in New Issue