From 8ad37b2217c30b756bb79ead84be7c04f628ed36 Mon Sep 17 00:00:00 2001 From: Christian Schwede Date: Fri, 1 Aug 2014 13:55:21 +0000 Subject: [PATCH] Fix swift-dispersion-populate bug when using SimpleClient class Commit 7fcbbebb changed the internal client a little bit and removed the class variable self.attempts in SimpleClient. This is currently still needed in swift-dispersion-populate to track the number of retries, thus re-adding it again. Closes-Bug: 1351323 Change-Id: I98ba6441607158b34708b2dbb2d1a63788681d63 --- swift/common/internal_client.py | 9 +++++---- test/unit/common/test_internal_client.py | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/swift/common/internal_client.py b/swift/common/internal_client.py index 2f09bb2d3c..cc1f022e1e 100644 --- a/swift/common/internal_client.py +++ b/swift/common/internal_client.py @@ -728,6 +728,7 @@ class SimpleClient(object): max_backoff=5, retries=5): self.url = url self.token = token + self.attempts = 0 # needed in swif-dispersion-populate self.starting_backoff = starting_backoff self.max_backoff = max_backoff self.retries = retries @@ -796,14 +797,14 @@ class SimpleClient(object): def retry_request(self, method, **kwargs): retries = kwargs.pop('retries', self.retries) - attempts = 0 + self.attempts = 0 backoff = self.starting_backoff - while attempts <= retries: - attempts += 1 + while self.attempts <= retries: + self.attempts += 1 try: return self.base_request(method, **kwargs) except (socket.error, httplib.HTTPException, urllib2.URLError): - if attempts > retries: + if self.attempts > retries: raise sleep(backoff) backoff = min(backoff * 2, self.max_backoff) diff --git a/test/unit/common/test_internal_client.py b/test/unit/common/test_internal_client.py index cb980dd471..df140ebdde 100644 --- a/test/unit/common/test_internal_client.py +++ b/test/unit/common/test_internal_client.py @@ -1211,6 +1211,7 @@ class TestSimpleClient(unittest.TestCase): request.assert_called_with('http://127.0.0.1?format=json', data=None, headers={'X-Auth-Token': 'token'}) self.assertEqual([None, None], retval) + self.assertEqual(sc.attempts, 2) @mock.patch('eventlet.green.urllib2.urlopen') def test_get_with_retries_param(self, mock_urlopen):