现象

搭odoo集群时服务总是重新加载并提示:Reloading the model registry after database signaling

原因

主从数据sequence不一致导致

解决

## 调整源码
def check_signaling(self):
""" Check whether the registry has changed, and performs all necessary
operations to update the registry. Return an up-to-date registry.
"""
if self.in_test_mode():
return self

with closing(self.cursor()) as cr:
cr.execute(""" SELECT base_registry_signaling.last_value+base_registry_signaling.log_cnt,
base_cache_signaling.last_value + base_cache_signaling.log_cnt
FROM base_registry_signaling, base_cache_signaling""")
r, c = cr.fetchone()
_logger.debug("Multiprocess signaling check: [Registry - %s -> %s] [Cache - %s -> %s]",
self.registry_sequence, r, self.cache_sequence, c)
# Check if the model registry must be reloaded
if self.registry_sequence != r:
_logger.info("Reloading the model registry after database signaling.")
self = Registry.new(self.db_name)
# Check if the model caches must be invalidated.
elif self.cache_sequence != c:
_logger.info("Invalidating all model caches after database signaling.")
self.clear_caches()
self.cache_invalidated = False
self.registry_sequence = r
self.cache_sequence = c

return self

参考:

​https://www.danaoker.com/archives/141​


懂得,原来世界如此简单!