compute: Use long_rpc_timeout in reserve_block_device_name
Given the instance.uuid lock taken on the remote compute, calls to reserve_block_device_name can take a large amount of time to complete when attaching multiple volumes. To help avoid timeouts during such attempts this change switches to using the long_rpc_timeout for the overall timeout for each call. Related-Bug: #1844296 Change-Id: I17e0e45117a3312c11d6c7f2762dd416b6067979
This commit is contained in:
@ -1170,7 +1170,9 @@ class ComputeAPI(object):
|
||||
version = '5.0'
|
||||
client = self.router.client(ctxt)
|
||||
cctxt = client.prepare(server=_compute_host(None, instance),
|
||||
version=version)
|
||||
version=version,
|
||||
call_monitor_timeout=CONF.rpc_response_timeout,
|
||||
timeout=CONF.long_rpc_timeout)
|
||||
return cctxt.call(ctxt, 'reserve_block_device_name', **kw)
|
||||
|
||||
def backup_instance(self, ctxt, instance, image_id, backup_type,
|
||||
|
@ -32,6 +32,7 @@ Operations with RPC calls that utilize this value:
|
||||
* image pre-caching
|
||||
* snapshot-based / cross-cell resize
|
||||
* resize / cold migration
|
||||
* volume attach
|
||||
|
||||
Related options:
|
||||
|
||||
|
@ -617,10 +617,12 @@ class ComputeRpcAPITestCase(test.NoDBTestCase):
|
||||
limits=None, request_spec=None, version='5.0')
|
||||
|
||||
def test_reserve_block_device_name(self):
|
||||
self.flags(long_rpc_timeout=1234)
|
||||
self._test_compute_api('reserve_block_device_name', 'call',
|
||||
instance=self.fake_instance_obj, device='device',
|
||||
volume_id='id', disk_bus='ide', device_type='cdrom',
|
||||
tag='foo', multiattach=True, version='5.0',
|
||||
timeout=1234, call_monitor_timeout=60,
|
||||
_return_value=objects_block_dev.BlockDeviceMapping())
|
||||
|
||||
def test_refresh_instance_security_rules(self):
|
||||
|
Reference in New Issue
Block a user