Merge "Ensure queue exists before get/update the claim"
This commit is contained in:
commit
678605c839
@ -118,6 +118,14 @@ class ClaimController(storage.Claim, scripting.Mixin):
|
|||||||
client = self._client
|
client = self._client
|
||||||
claims_set_key = utils.scope_claims_set(queue, project,
|
claims_set_key = utils.scope_claims_set(queue, project,
|
||||||
QUEUE_CLAIMS_SUFFIX)
|
QUEUE_CLAIMS_SUFFIX)
|
||||||
|
# In some cases, the queue maybe doesn't exist. So we should check
|
||||||
|
# whether the queue exists. Return False if no such queue exists.
|
||||||
|
|
||||||
|
# Todo(flwang): We should delete all related data after the queue is
|
||||||
|
# deleted. See the blueprint for more detail:
|
||||||
|
# https://blueprints.launchpad.net/zaqar/+spec/clear-resources-after-delete-queue
|
||||||
|
if not self._queue_ctrl._exists(queue, project):
|
||||||
|
return False
|
||||||
|
|
||||||
# Return False if no such claim exists
|
# Return False if no such claim exists
|
||||||
# TODO(prashanthr_): Discuss the feasibility of a bloom filter.
|
# TODO(prashanthr_): Discuss the feasibility of a bloom filter.
|
||||||
|
@ -400,6 +400,20 @@ class RedisClaimsTest(base.ClaimControllerTest):
|
|||||||
self.controller.update, queue_name,
|
self.controller.update, queue_name,
|
||||||
claim_id, {}, project=None)
|
claim_id, {}, project=None)
|
||||||
|
|
||||||
|
# create a claim and then delete the queue
|
||||||
|
claim_id, messages = self.controller.create(queue_name, {'ttl': 100,
|
||||||
|
'grace': 0},
|
||||||
|
project=None)
|
||||||
|
self.queue_controller.delete(queue_name)
|
||||||
|
|
||||||
|
self.assertRaises(storage.errors.ClaimDoesNotExist,
|
||||||
|
self.controller.get, queue_name,
|
||||||
|
claim_id, project=None)
|
||||||
|
|
||||||
|
self.assertRaises(storage.errors.ClaimDoesNotExist,
|
||||||
|
self.controller.update, queue_name,
|
||||||
|
claim_id, {}, project=None)
|
||||||
|
|
||||||
def test_get_claim_after_expires(self):
|
def test_get_claim_after_expires(self):
|
||||||
queue_name = 'no-such-claim'
|
queue_name = 'no-such-claim'
|
||||||
self.queue_controller.create(queue_name, project='fake_project')
|
self.queue_controller.create(queue_name, project='fake_project')
|
||||||
|
Loading…
Reference in New Issue
Block a user