git-svn-id: https://s3tools.svn.sourceforge.net/svnroot/s3tools/s3cmd/branches/0.9.8.x@251 830e0280-6d2a-0410-9c65-932aecc39d9d
Michal Ludvig authored on 2008/11/06 15:25:37... | ... |
@@ -1,5 +1,8 @@ |
1 | 1 |
2008-11-06 Michal Ludvig <michal@logix.cz> |
2 | 2 |
|
3 |
+ * S3/S3.py: Adjusting commit 249 - it's not a good idea to retry ALL failures. |
|
4 |
+ Especially not those code=4xx where AmazonS3 servers are not happy with our |
|
5 |
+ requests. |
|
3 | 6 |
* run-tests.sh: Use unique bucket name for testing. Apparently someone |
4 | 7 |
else snatched my favourite s3://s3cmd-autotest :-D |
5 | 8 |
|
... | ... |
@@ -316,9 +316,9 @@ class S3(object): |
316 | 316 |
response["data"] = http_response.read() |
317 | 317 |
debug("Response: " + str(response)) |
318 | 318 |
conn.close() |
319 |
- except Exception: |
|
319 |
+ except Exception, e: |
|
320 | 320 |
if retries: |
321 |
- warning("Retrying failed request: %s" % resource['uri']) |
|
321 |
+ warning("Retrying failed request: %s (%s)" % (resource['uri'], e)) |
|
322 | 322 |
return self.send_request(request, body, retries - 1) |
323 | 323 |
else: |
324 | 324 |
raise S3RequestError("Request failed for: %s" % resource['uri']) |
... | ... |
@@ -331,12 +331,18 @@ class S3(object): |
331 | 331 |
info("Redirected to: %s" % (redir_hostname)) |
332 | 332 |
return self.send_request(request, body) |
333 | 333 |
|
334 |
- if response["status"] < 200 or response["status"] > 299: |
|
334 |
+ if response["status"] >= 500: |
|
335 |
+ e = S3Error(response) |
|
335 | 336 |
if retries: |
336 |
- warning("Retrying failed request: %s" % resource['uri']) |
|
337 |
+ warning(u"Retrying failed request: %s" % resource['uri']) |
|
338 |
+ warning(unicode(e)) |
|
337 | 339 |
return self.send_request(request, body, retries - 1) |
338 | 340 |
else: |
339 |
- raise S3Error(response) |
|
341 |
+ raise e |
|
342 |
+ |
|
343 |
+ if response["status"] < 200 or response["status"] > 299: |
|
344 |
+ raise S3Error(response) |
|
345 |
+ |
|
340 | 346 |
return response |
341 | 347 |
|
342 | 348 |
def send_file(self, request, file, throttle = 0, retries = 3): |