Skip to content

Commit 52314e6

Browse files
author
Tom McCarthy
authored
fix: remove DeleteMessageBatch call to SQS api if there are no messages to delete (#170)
1 parent 805f23d commit 52314e6

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

aws_lambda_powertools/utilities/batch/sqs.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ def _clean(self):
115115
queue_url = self._get_queue_url()
116116
entries_to_remove = self._get_entries_to_clean()
117117

118-
delete_message_response = self.client.delete_message_batch(QueueUrl=queue_url, Entries=entries_to_remove)
118+
delete_message_response = None
119+
if entries_to_remove:
120+
delete_message_response = self.client.delete_message_batch(QueueUrl=queue_url, Entries=entries_to_remove)
119121

120122
if self.suppress_exception:
121123
logger.debug(f"{len(self.fail_messages)} records failed processing, but exceptions are suppressed")

tests/functional/test_utilities_batch.py

+15
Original file line numberDiff line numberDiff line change
@@ -275,3 +275,18 @@ def lambda_handler(event, context):
275275

276276
stubber.assert_no_pending_responses()
277277
assert result is True
278+
279+
280+
def test_partial_sqs_processor_context_only_failure(sqs_event_factory, record_handler, partial_processor):
281+
"""
282+
Test processor with only failures
283+
"""
284+
first_record = sqs_event_factory("fail")
285+
second_record = sqs_event_factory("fail")
286+
287+
records = [first_record, second_record]
288+
with pytest.raises(SQSBatchProcessingError) as error:
289+
with partial_processor(records, record_handler) as ctx:
290+
ctx.process()
291+
292+
assert len(error.value.args[0]) == 2

0 commit comments

Comments
 (0)