Retry image download if it's corrupted
Adding IOError in list of catching exceptions in order to fix behavior when nova-compute wouldn't retry image download when got "Corrupt image download" error from glanceclient and had num_retries config option set. Closes-Bug: #1950657 Change-Id: Iae4fd0579f71d3ba6793dbdb037275352d7e57b0
This commit is contained in:
parent
69b0d31d20
commit
ce493273b9
@ -178,7 +178,8 @@ class GlanceClientWrapper(object):
|
|||||||
kwargs = kwargs or {}
|
kwargs = kwargs or {}
|
||||||
retry_excs = (glanceclient.exc.ServiceUnavailable,
|
retry_excs = (glanceclient.exc.ServiceUnavailable,
|
||||||
glanceclient.exc.InvalidEndpoint,
|
glanceclient.exc.InvalidEndpoint,
|
||||||
glanceclient.exc.CommunicationError)
|
glanceclient.exc.CommunicationError,
|
||||||
|
IOError)
|
||||||
num_attempts = 1 + CONF.glance.num_retries
|
num_attempts = 1 + CONF.glance.num_retries
|
||||||
controller_name = controller or 'images'
|
controller_name = controller or 'images'
|
||||||
|
|
||||||
|
@ -464,6 +464,20 @@ class TestGlanceClientWrapperRetries(test.NoDBTestCase):
|
|||||||
client = glance.GlanceClientWrapper()
|
client = glance.GlanceClientWrapper()
|
||||||
self.assert_retry_attempted(sleep_mock, client, 'https://host2:9293')
|
self.assert_retry_attempted(sleep_mock, client, 'https://host2:9293')
|
||||||
|
|
||||||
|
@mock.patch('random.shuffle')
|
||||||
|
@mock.patch('time.sleep')
|
||||||
|
@mock.patch('nova.image.glance._glanceclient_from_endpoint')
|
||||||
|
def test_retry_works_for_corrupted_image(self, create_client_mock,
|
||||||
|
sleep_mock, shuffle_mock):
|
||||||
|
side_effect = [
|
||||||
|
IOError,
|
||||||
|
None
|
||||||
|
]
|
||||||
|
self._mock_client_images_response(create_client_mock, side_effect)
|
||||||
|
self.flags(num_retries=1, group='glance')
|
||||||
|
client = glance.GlanceClientWrapper()
|
||||||
|
self.assert_retry_attempted(sleep_mock, client, 'https://host2:9293')
|
||||||
|
|
||||||
@mock.patch('random.shuffle')
|
@mock.patch('random.shuffle')
|
||||||
@mock.patch('time.sleep')
|
@mock.patch('time.sleep')
|
||||||
@mock.patch('nova.image.glance._glanceclient_from_endpoint')
|
@mock.patch('nova.image.glance._glanceclient_from_endpoint')
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
`Bug 1950657 <https://bugs.launchpad.net/nova/+bug/1950657>`_, fixing
|
||||||
|
behavior when nova-compute wouldn't retry image download when gets
|
||||||
|
"Corrupt image download" error from glanceclient and has num_retries
|
||||||
|
config option set.
|
Loading…
Reference in New Issue
Block a user