Fix uncaught DB exception when trying to get a spare amphora

The MapLoadbalancerToAmphora task performs some database queries but
doesn't catch any exception from it.

In case something goes wrong with the database or the query, this commit
catchs any exception from the DB call, logs it and then returns None to
switch to the next decider branch (boot a new amphora).

Story 2007320
Task 38831

Conflicts:
	octavia/controller/worker/tasks/database_tasks.py

Change-Id: Ifb6c34426e0927534d332a8bbf2c66aac6c002c5
(cherry picked from commit 3bbd32a2a5)
(cherry picked from commit 0c1cb417e9)
(cherry picked from commit 372e047a84)
This commit is contained in:
Gregory Thiemonge 2020-02-21 10:48:43 +01:00
parent 3b1cd9afc3
commit e7376be7af
1 changed files with 10 additions and 3 deletions

View File

@ -497,9 +497,16 @@ class MapLoadbalancerToAmphora(BaseDatabaseTask):
"pool allocation.")
return None
amp = self.amphora_repo.allocate_and_associate(
db_apis.get_session(),
loadbalancer_id)
try:
amp = self.amphora_repo.allocate_and_associate(
db_apis.get_session(),
loadbalancer_id)
except Exception as e:
LOG.error("Failed to get a spare amphora for "
"loadbalancer {} due to: {}".format(
loadbalancer_id, e))
return None
if amp is None:
LOG.debug("No Amphora available for load balancer with id %s",
loadbalancer_id)