Merge "BSN: Set inconsistency record on delete failure"
This commit is contained in:
commit
ee74e03db0
@ -473,6 +473,13 @@ class ServerPool(object):
|
||||
'data': ret[3]})
|
||||
active_server.failed = True
|
||||
|
||||
# A failure on a delete means the object is gone from Neutron but not
|
||||
# from the controller. Set the consistency hash to a bad value to
|
||||
# trigger a sync on the next check.
|
||||
# NOTE: The hash must have a comma in it otherwise it will be ignored
|
||||
# by the backend.
|
||||
if action == 'DELETE':
|
||||
hash_handler.put_hash('INCONSISTENT,INCONSISTENT')
|
||||
# All servers failed, reset server list and try again next time
|
||||
LOG.error(_('ServerProxy: %(action)s failure for all servers: '
|
||||
'%(server)r'),
|
||||
|
@ -23,6 +23,7 @@ from oslo.serialization import jsonutils
|
||||
from neutron import context
|
||||
from neutron import manager
|
||||
from neutron.openstack.common import importutils
|
||||
from neutron.plugins.bigswitch.db import consistency_db as cdb
|
||||
from neutron.plugins.bigswitch import servermanager
|
||||
from neutron.tests.unit.bigswitch import test_restproxy_plugin as test_rp
|
||||
|
||||
@ -411,6 +412,18 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
|
||||
sleep_call_count = rest_call_count - 1
|
||||
tmock.assert_has_calls(sleep_call * sleep_call_count)
|
||||
|
||||
def test_delete_failure_sets_bad_hash(self):
|
||||
pl = manager.NeutronManager.get_plugin()
|
||||
hash_handler = cdb.HashHandler()
|
||||
with mock.patch(
|
||||
SERVERMANAGER + '.ServerProxy.rest_call',
|
||||
return_value=(httplib.INTERNAL_SERVER_ERROR, 0, 0, 0)
|
||||
):
|
||||
# a failed delete call should put a bad hash in the DB
|
||||
pl.servers.rest_call('DELETE', '/', '', None, [])
|
||||
self.assertEqual('INCONSISTENT,INCONSISTENT',
|
||||
hash_handler.read_for_update())
|
||||
|
||||
def test_conflict_triggers_sync(self):
|
||||
pl = manager.NeutronManager.get_plugin()
|
||||
with mock.patch(
|
||||
|
Loading…
x
Reference in New Issue
Block a user