From c154d98b9636d453ddbc4784fab43e8bdf2b2087 Mon Sep 17 00:00:00 2001 From: Wesley Spikes Date: Mon, 18 Jul 2011 15:34:06 -0700 Subject: [PATCH] Resolve the random AssertionError By doing a copy-new on the key, it seems to work around the random AssertionError's I've been seeing. Here's hoping this fully resolves it. --- s3tests/common/greenlets.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/s3tests/common/greenlets.py b/s3tests/common/greenlets.py index 8ed90ac..4da0ba1 100644 --- a/s3tests/common/greenlets.py +++ b/s3tests/common/greenlets.py @@ -49,13 +49,7 @@ class SafeTransferGreenlet(gevent.Greenlet): # We don't want to retry, as it's time to exit, but we also don't want to count # this as a failure. return False - except AssertionError as e: - # If we've raised this damn gevent error, we simply need to retry. - if e.args[0].startswith('This event is already used by another greenlet'): - return True # retry - # Different assertion error, so fail normally. - result.setError(show_traceback=True) - except Exception: + except: result.setError(show_traceback=True) result.markFinished() @@ -76,6 +70,8 @@ class ReaderGreenlet(SafeTransferGreenlet): time.sleep(1) return self.result.setError('No available keys to test with reader. Try again later.') + # Copynew the key object + key = key.bucket.new_key(key.name) self.key = key self.result.setKey(key)