Merge "Fix fail of getting claim after claim expire(Redis)"

This commit is contained in:
Jenkins 2016-06-08 23:04:18 +00:00 committed by Gerrit Code Review
commit cb0e04a3f9
2 changed files with 22 additions and 1 deletions

View File

@ -98,7 +98,10 @@ class ClaimController(storage.Claim, scripting.Mixin):
"""Get one or more fields from the claim Info."""
values = self._client.hmget(claim_id, fields)
return [transform(v) for v in values] if transform else values
if values == [None]:
return values
else:
return [transform(v) for v in values] if transform else values
def _claim_messages(self, msgset_key, now, limit,
claim_id, claim_expires, msg_ttl, msg_expires):

View File

@ -400,6 +400,24 @@ class RedisClaimsTest(base.ClaimControllerTest):
self.controller.update, queue_name,
claim_id, {}, project=None)
def test_get_claim_after_expires(self):
queue_name = 'no-such-claim'
self.queue_controller.create(queue_name, project='fake_project')
new_messages = [{'ttl': 60, 'body': {}},
{'ttl': 60, 'body': {}},
{'ttl': 60, 'body': {}}]
self.message_controller.post(queue_name, new_messages,
client_uuid=str(uuid.uuid1()),
project='fake_project')
claim_id, messages = self.controller.create(queue_name, {'ttl': 1,
'grace': 0},
project='fake_project')
# Lets let it expire
time.sleep(2)
self.assertRaises(storage.errors.ClaimDoesNotExist,
self.controller.get, queue_name,
claim_id, project='fake_project')
def test_gc(self):
self.queue_controller.create(self.queue_name)