Catch DBReferenceError exception during binding a router
In some cases (Concurrent API tests) router can be deleted before it is bound to an agent by scheduler. That may lead to traces on L3 agent side returned via RPC. Need to handle this case in more graceful way. Change-Id: Ic52c26ace7f32a615150bd6098b244ae0b98250c Closes-Bug: #1385257
This commit is contained in:
parent
8edf980078
commit
19a79a1148
@ -220,6 +220,10 @@ class L3Scheduler(object):
|
||||
{'agent_id': chosen_agent.id,
|
||||
'router_id': router_id})
|
||||
return
|
||||
except db_exc.DBReferenceError:
|
||||
LOG.debug('Router %s has already been removed '
|
||||
'by concurrent operation', router_id)
|
||||
return
|
||||
|
||||
LOG.debug('Router %(router_id)s is scheduled to L3 agent '
|
||||
'%(agent_id)s', {'router_id': router_id,
|
||||
|
@ -482,6 +482,12 @@ class L3SchedulerTestBaseMixin(object):
|
||||
args, kwargs = flog.call_args
|
||||
self.assertIn('is scheduled', args[0])
|
||||
|
||||
def test_bind_absent_router(self):
|
||||
scheduler = l3_agent_scheduler.ChanceScheduler()
|
||||
# checking that bind_router() is not throwing
|
||||
# when supplied with router_id of non-existing router
|
||||
scheduler.bind_router(self.adminContext, "dummyID", self.agent1)
|
||||
|
||||
def test_bind_existing_router(self):
|
||||
router = self._make_router(self.fmt,
|
||||
tenant_id=str(uuid.uuid4()),
|
||||
|
Loading…
x
Reference in New Issue
Block a user