Enable deleting of message with claim id

This patch fixes a bug wherein a user was not able to delete
a claimed message due to the claim id not being passed along with
the message id.

Change-Id: If893d2ca9cb1e0ff5fe82cc15e3f2e8dd0ccac3f
Closes-Bug:1325032
This commit is contained in:
TheSriram 2014-06-02 09:59:12 -04:00 committed by Sriram Madapusi Vasudevan
parent 9e53235006
commit cd95664f3f
4 changed files with 35 additions and 15 deletions

View File

@ -35,18 +35,15 @@ def send_jobs():
def process_jobs():
while True:
claim1 = queue.claim(ttl=500, grace=900, limit=2)
for msg in claim1:
claim_id = msg.claim_id
print('{claim_id} =? {id}'.format(claim_id=claim_id, id=claim1.id))
print('processing job %s' % (msg))
msg.delete()
claim2 = queue.claim(id=claim_id)
print(claim2)
print('nothing to do but have a sleep :)')
time.sleep(1)
claim1 = queue.claim(ttl=500, grace=900, limit=2)
for msg in claim1:
claim_id = msg.claim_id
print('{claim_id} =? {id}'.format(claim_id=claim_id, id=claim1.id))
print('processing job %s' % (msg))
msg.delete()
time.sleep(0.5)
if __name__ == '__main__':
send_jobs()
process_jobs()
while True:
send_jobs()
process_jobs()

View File

@ -243,7 +243,8 @@ def message_get_many(transport, request, queue_name, messages, callback=None):
return resp.deserialized_content
def message_delete(transport, request, queue_name, message_id, callback=None):
def message_delete(transport, request, queue_name, message_id,
claim_id=None, callback=None):
"""Deletes messages from `queue_name`
:param transport: Transport instance to use
@ -263,6 +264,8 @@ def message_delete(transport, request, queue_name, message_id, callback=None):
request.operation = 'message_delete'
request.params['queue_name'] = queue_name
request.params['message_id'] = message_id
if claim_id:
request.params['claim_id'] = claim_id
transport.send(request)

View File

@ -50,7 +50,8 @@ class Message(object):
def delete(self):
req, trans = self.queue.client._request_and_transport()
core.message_delete(trans, req, self.queue._name, self._id)
core.message_delete(trans, req, self.queue._name,
self._id, self.claim_id)
def create_object(parent):

View File

@ -40,3 +40,22 @@ class QueuesV1MessageUnitTest(base.QueuesTestBase):
send_method.return_value = None
self.assertIsNone(msg.delete())
def test_message_delete_with_claim(self):
returned = {
'href': '/v1/queues/fizbit/messages/50b68a50d6?claim_id=5388b5dd0',
'ttl': 800,
'age': 790,
'body': {'event': 'ActivateAccount', 'mode': 'active'}
}
with mock.patch.object(self.transport, 'send',
autospec=True) as send_method:
resp = response.Response(None, json.dumps(returned))
send_method.return_value = resp
msg = self.queue.message('50b68a50d6')
send_method.return_value = None
self.assertIsNone(msg.delete())