diff --git a/localstack/services/sqs/models.py b/localstack/services/sqs/models.py index 0c7312fd5dc9d..f558a725bd90d 100644 --- a/localstack/services/sqs/models.py +++ b/localstack/services/sqs/models.py @@ -983,6 +983,7 @@ def clear(self): self.message_groups.clear() self.inflight_groups.clear() self.message_group_queue.queue.clear() + self.deduplication.clear() class SqsStore(BaseStore): diff --git a/tests/integration/test_sqs.py b/tests/integration/test_sqs.py index 6ae4d77cc200f..6dabcbc86d4f4 100644 --- a/tests/integration/test_sqs.py +++ b/tests/integration/test_sqs.py @@ -2924,6 +2924,36 @@ def test_purge_queue_deletes_delayed_messages(self, sqs_create_queue, aws_client receive_result = aws_client.sqs.receive_message(QueueUrl=queue_url, WaitTimeSeconds=1) assert "Messages" not in receive_result.keys() + @pytest.mark.aws_validated + def test_purge_queue_clears_fifo_deduplication_cache(self, sqs_create_queue, aws_client): + fifo_queue_name = f"test-queue-{short_uid()}.fifo" + queue_url = sqs_create_queue(QueueName=fifo_queue_name, Attributes={"FifoQueue": "true"}) + dedup_id = f"fifo_dedup-{short_uid()}" + group_id = f"fifo_group-{short_uid()}" + + aws_client.sqs.send_message( + QueueUrl=queue_url, + MessageBody="message-1", + MessageGroupId=group_id, + MessageDeduplicationId=dedup_id, + ) + + aws_client.sqs.purge_queue(QueueUrl=queue_url) + + aws_client.sqs.send_message( + QueueUrl=queue_url, + MessageBody="message-2", + MessageGroupId=group_id, + MessageDeduplicationId=dedup_id, + ) + + receive_result = aws_client.sqs.receive_message(QueueUrl=queue_url, WaitTimeSeconds=1) + + assert len(receive_result["Messages"]) == 1 + message = receive_result["Messages"][0] + + assert message["Body"] == "message-2" + @pytest.mark.aws_validated @pytest.mark.skip_snapshot_verify(paths=["$..Error.Detail"]) def test_successive_purge_calls_fail(self, sqs_create_queue, monkeypatch, snapshot, aws_client):