fix clear pending messages when call purge_queue (#3208)

This commit is contained in:
Yuuki Takahashi 2020-08-03 23:09:25 +09:00 committed by GitHub
parent 061c609a8f
commit 99736c3101
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 0 deletions

View File

@ -844,6 +844,7 @@ class SQSBackend(BaseBackend):
def purge_queue(self, queue_name): def purge_queue(self, queue_name):
queue = self.get_queue(queue_name) queue = self.get_queue(queue_name)
queue._messages = [] queue._messages = []
queue._pending_messages = set()
def list_dead_letter_source_queues(self, queue_name): def list_dead_letter_source_queues(self, queue_name):
dlq = self.get_queue(queue_name) dlq = self.get_queue(queue_name)

View File

@ -1098,6 +1098,38 @@ def test_purge_action():
queue.count().should.equal(0) queue.count().should.equal(0)
@mock_sqs
def test_purge_queue_before_delete_message():
client = boto3.client("sqs", region_name="us-east-1")
create_resp = client.create_queue(
QueueName="test-dlr-queue.fifo", Attributes={"FifoQueue": "true"}
)
queue_url = create_resp["QueueUrl"]
client.send_message(
QueueUrl=queue_url,
MessageGroupId="test",
MessageDeduplicationId="first_message",
MessageBody="first_message",
)
receive_resp1 = client.receive_message(QueueUrl=queue_url)
# purge before call delete_message
client.purge_queue(QueueUrl=queue_url)
client.send_message(
QueueUrl=queue_url,
MessageGroupId="test",
MessageDeduplicationId="second_message",
MessageBody="second_message",
)
receive_resp2 = client.receive_message(QueueUrl=queue_url)
len(receive_resp2.get("Messages", [])).should.equal(1)
receive_resp2["Messages"][0]["Body"].should.equal("second_message")
@mock_sqs_deprecated @mock_sqs_deprecated
def test_delete_message_after_visibility_timeout(): def test_delete_message_after_visibility_timeout():
VISIBILITY_TIMEOUT = 1 VISIBILITY_TIMEOUT = 1