[FIX] return code is non-zero if any preloaded database failed to load

bzr revid: chs@openerp.com-20140221220348-vw3mll25dti1n23u
This commit is contained in:
Christophe Simonis 2014-02-21 23:03:48 +01:00
parent 186bb97638
commit 40f7df4fd8
1 changed files with 11 additions and 6 deletions

View File

@ -318,11 +318,11 @@ class ThreadedServer(CommonServer):
""" """
self.start() self.start()
preload_registries(preload) rc = preload_registries(preload)
if stop: if stop:
self.stop() self.stop()
return return rc
# Wait for a first signal to be handled. (time.sleep will be interrupted # Wait for a first signal to be handled. (time.sleep will be interrupted
@ -583,11 +583,11 @@ class PreforkServer(CommonServer):
def run(self, preload, stop): def run(self, preload, stop):
self.start() self.start()
preload_registries(preload) rc = preload_registries(preload)
if stop: if stop:
self.stop() self.stop()
return return rc
_logger.debug("Multiprocess starting") _logger.debug("Multiprocess starting")
while 1: while 1:
@ -855,6 +855,7 @@ def preload_registries(dbnames):
config = openerp.tools.config config = openerp.tools.config
test_file = config['test_file'] test_file = config['test_file']
dbnames = dbnames or [] dbnames = dbnames or []
rc = 0
for dbname in dbnames: for dbname in dbnames:
try: try:
update_module = config['init'] or config['update'] update_module = config['init'] or config['update']
@ -866,9 +867,13 @@ def preload_registries(dbnames):
load_test_file_yml(test_file) load_test_file_yml(test_file)
elif test_file.endswith('py'): elif test_file.endswith('py'):
load_test_file_py(test_file) load_test_file_py(test_file)
if registry._assertion_report.failures:
rc += 1
except Exception: except Exception:
_logger.exception('Failed to initialize database `%s`.', dbname) _logger.critical('Failed to initialize database `%s`.', dbname, exc_info=True)
return return -1
return rc
def start(preload=None, stop=False): def start(preload=None, stop=False):
""" Start the openerp http server and cron processor. """ Start the openerp http server and cron processor.