Skip to content
Snippets Groups Projects
Commit fbe2092d authored by Christophe Monniez's avatar Christophe Monniez
Browse files

[FIX] packaging: stop docker container when odoo fails


When the Odoo installation is tested, if the test fails an error is
raised but the Docker container is not stopped.

As a result, a ghost container stays alive with a Postgres server
running. Worse, if another package is built on the same host, the
ghost container prevent the other build to succeed.

With this commit, a specific Exception is raised and the container is
stopped in any case.

closes odoo/odoo#56210

Signed-off-by: default avatarChristophe Monniez (moc) <moc@odoo.com>
parent 3079ede4
No related branches found
No related tags found
No related merge requests found
......@@ -40,6 +40,14 @@ USER odoo
""" % {'group_id': os.getgid(), 'user_id': os.getuid()}
class OdooTestTimeoutError(Exception):
pass
class OdooTestError(Exception):
pass
def run_cmd(cmd, chdir=None, timeout=None):
logging.info("Running command %s", cmd)
return subprocess.run(cmd, cwd=chdir, timeout=timeout)
......@@ -60,12 +68,12 @@ def _rpc_count_modules(addr='http://127.0.0.1', port=8069, dbname='mycompany'):
)
if toinstallmodules:
logging.error("Package test: FAILED. Not able to install dependencies of base.")
raise Exception("Installation of package failed")
raise OdooTestError("Installation of package failed")
else:
logging.info("Package test: successfuly installed %s modules" % len(modules))
else:
logging.error("Package test: FAILED. Not able to install base.")
raise Exception("Package test: FAILED. Not able to install base.")
raise OdooTestError("Package test: FAILED. Not able to install base.")
def publish(args, pub_type, extensions):
......@@ -184,14 +192,6 @@ def _prepare_build_dir(args, win32=False):
# Docker stuffs
class OdooTestTimeoutError(Exception):
pass
class OdooTestError(Exception):
pass
class Docker():
"""Base Docker class. Must be inherited by specific Docker builder class"""
arch = None
......@@ -265,8 +265,10 @@ class Docker():
while self.is_running() and (time.time() - start_time) < INSTALL_TIMEOUT:
time.sleep(5)
if os.path.exists(os.path.join(args.build_dir, 'odoo.pid')):
_rpc_count_modules(port=self.exposed_port)
self.stop()
try:
_rpc_count_modules(port=self.exposed_port)
finally:
self.stop()
return
if self.is_running():
self.stop()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment