From d00df1332b919edaa80108b92b34c6c65f672e99 Mon Sep 17 00:00:00 2001 From: Joanna Jo Date: Mon, 9 Jun 2025 16:14:22 -0700 Subject: [PATCH] Reset values properly in HTTPPriorityQueue::clear() Summary: Fixing bug where `HTTPPriorityQueue::clear()` doesn't properly reset `roundRobinElements_` and `lowestRoundRobin_`. Reviewed By: hanidamlaj Differential Revision: D76171861 fbshipit-source-id: fc408471be75e42abda934f79493bb801c2258dc --- quic/priority/HTTPPriorityQueue.cpp | 2 ++ quic/priority/test/HTTPPriorityQueueTest.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/quic/priority/HTTPPriorityQueue.cpp b/quic/priority/HTTPPriorityQueue.cpp index 9455757c4..b24b0ff20 100644 --- a/quic/priority/HTTPPriorityQueue.cpp +++ b/quic/priority/HTTPPriorityQueue.cpp @@ -167,6 +167,8 @@ void HTTPPriorityQueue::clear() { for (auto& rr : roundRobins_) { rr.clear(); } + roundRobinElements_ = 0; + lowestRoundRobin_ = roundRobins_.size(); } const HTTPPriorityQueue::Element* FOLLY_NULLABLE diff --git a/quic/priority/test/HTTPPriorityQueueTest.cpp b/quic/priority/test/HTTPPriorityQueueTest.cpp index 1479a942d..3a3599a8e 100644 --- a/quic/priority/test/HTTPPriorityQueueTest.cpp +++ b/quic/priority/test/HTTPPriorityQueueTest.cpp @@ -21,6 +21,16 @@ class HTTPPriorityQueueTest : public testing::Test { }; TEST_F(HTTPPriorityQueueTest, EmptyQueue) { + queue_.clear(); + EXPECT_TRUE(queue_.empty()); +} + +TEST_F(HTTPPriorityQueueTest, IncrementalEmptyQueue) { + auto id = Identifier::fromStreamID(1); + auto priority = HTTPPriorityQueue::Priority(0, true); + queue_.insertOrUpdate(id, priority); + EXPECT_FALSE(queue_.empty()); + queue_.clear(); EXPECT_TRUE(queue_.empty()); }