Fix sqs message retention logic (#3924)
* Fix sqs message retention logic * Apply lint to moto/sqs/models.py * Fix failed tests because of freezing time * Fix freezing time in test_publish_to_sqs_in_different_region
This commit is contained in:
parent
9e3faf7784
commit
f9e0595e12
4 changed files with 43 additions and 11 deletions
|
|
@ -836,7 +836,9 @@ 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):
|
||||
if not self.is_message_valid_based_on_retention_period(
|
||||
queue_name, message
|
||||
):
|
||||
break
|
||||
result.append(message)
|
||||
if len(result) >= count:
|
||||
|
|
@ -1015,11 +1017,12 @@ 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):
|
||||
def is_message_valid_based_on_retention_period(self, queue_name, message):
|
||||
message_attributes = self.get_queue_attributes(queue_name, [])
|
||||
retain_until = message_attributes.get(
|
||||
"MessageRetentionPeriod"
|
||||
) + message_attributes.get("CreatedTimestamp")
|
||||
retain_until = (
|
||||
message_attributes.get("MessageRetentionPeriod")
|
||||
+ message.sent_timestamp / 1000
|
||||
)
|
||||
if retain_until <= unix_time():
|
||||
return False
|
||||
return True
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue