Fix:SQS-message retention period consideration (#3642)

* Fix:SQS-message retention period consideration

* Fix:SQS-message retention period consideration

* Fix:SQS-message retention period consideration

* Added comments &linting

* Fixed tests
This commit is contained in:
usmangani1 2021-02-14 18:34:55 +05:30 committed by GitHub
commit d8097b24dc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 8 deletions

View file

@ -827,6 +827,8 @@ class SQSBackend(BaseBackend):
queue.pending_messages.add(message)
message.mark_received(visibility_timeout=visibility_timeout)
_filter_message_attributes(message, message_attribute_names)
if not self.is_message_valid_based_on_retention_period(queue_name):
break
result.append(message)
if len(result) >= count:
break
@ -1004,6 +1006,15 @@ class SQSBackend(BaseBackend):
def list_queue_tags(self, queue_name):
return self.get_queue(queue_name)
def is_message_valid_based_on_retention_period(self, queue_name):
message_attributes = self.get_queue_attributes(queue_name, [])
retain_until = message_attributes.get(
"MessageRetentionPeriod"
) + message_attributes.get("CreatedTimestamp")
if retain_until <= unix_time():
return False
return True
sqs_backends = {}
for region in Session().get_available_regions("sqs"):