Browse code

* S3/S3.py: Adjusting commit 249 - it's not a good idea to retry ALL failures. Especially not those code=4xx where AmazonS3 servers are not happy with our requests.

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
Showing 2 changed files
... ...
@@ -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):