Remove PriorityWriteScheduler::root_stream_id_.
In practice, PriorityWriteScheduler is always used with spdy::StreamPrecedence
objects that have `is_spdy3_priority == true`, and the QUICHE_BUGs on
`root_stream_id_` are never triggered.
PiperOrigin-RevId: 499839152
diff --git a/quiche/http2/core/priority_write_scheduler.h b/quiche/http2/core/priority_write_scheduler.h
index 7335545..6f7b92f 100644
--- a/quiche/http2/core/priority_write_scheduler.h
+++ b/quiche/http2/core/priority_write_scheduler.h
@@ -45,28 +45,8 @@
public:
using typename WriteScheduler<StreamIdType>::StreamPrecedenceType;
- // Creates scheduler with no streams.
- PriorityWriteScheduler() : PriorityWriteScheduler(spdy::kHttp2RootStreamId) {}
- explicit PriorityWriteScheduler(StreamIdType root_stream_id)
- : root_stream_id_(root_stream_id) {}
-
void RegisterStream(StreamIdType stream_id,
const StreamPrecedenceType& precedence) override {
- // TODO(mpw): verify |precedence.is_spdy3_priority() == true| once
- // Http2PriorityWriteScheduler enabled for HTTP/2.
-
- // parent_id not used here, but may as well validate it. However,
- // parent_id may legitimately not be registered yet--see b/15676312.
- StreamIdType parent_id = precedence.parent_id();
- QUICHE_DVLOG_IF(
- 1, parent_id != root_stream_id_ && !StreamRegistered(parent_id))
- << "Parent stream " << parent_id << " not registered";
-
- if (stream_id == root_stream_id_) {
- QUICHE_BUG(spdy_bug_19_1)
- << "Stream " << root_stream_id_ << " already registered";
- return;
- }
auto stream_info = std::make_unique<StreamInfo>(
StreamInfo{precedence.spdy3_priority(), stream_id, false});
bool inserted =
@@ -107,16 +87,6 @@
void UpdateStreamPrecedence(StreamIdType stream_id,
const StreamPrecedenceType& precedence) override {
- // TODO(mpw): verify |precedence.is_spdy3_priority() == true| once
- // Http2PriorityWriteScheduler enabled for HTTP/2.
-
- // parent_id not used here, but may as well validate it. However,
- // parent_id may legitimately not be registered yet--see b/15676312.
- StreamIdType parent_id = precedence.parent_id();
- QUICHE_DVLOG_IF(
- 1, parent_id != root_stream_id_ && !StreamRegistered(parent_id))
- << "Parent stream " << parent_id << " not registered";
-
auto it = stream_infos_.find(stream_id);
if (it == stream_infos_.end()) {
// TODO(mpw): add to stream_infos_ on demand--see b/15676312.
@@ -331,7 +301,6 @@
PriorityInfo priority_infos_[spdy::kV3LowestPriority + 1];
// StreamInfos for all registered streams.
StreamInfoMap stream_infos_;
- StreamIdType root_stream_id_;
};
} // namespace http2
diff --git a/quiche/http2/core/priority_write_scheduler_test.cc b/quiche/http2/core/priority_write_scheduler_test.cc
index 9be325f..e94e522 100644
--- a/quiche/http2/core/priority_write_scheduler_test.cc
+++ b/quiche/http2/core/priority_write_scheduler_test.cc
@@ -51,16 +51,14 @@
EXPECT_TRUE(scheduler_.StreamRegistered(1));
EXPECT_EQ(1u, scheduler_.NumRegisteredStreams());
- // Root stream counts as already registered.
- EXPECT_QUICHE_BUG(
- scheduler_.RegisterStream(kHttp2RootStreamId, SpdyStreamPrecedence(1)),
- "Stream 0 already registered");
-
// Try redundant registrations.
EXPECT_QUICHE_BUG(scheduler_.RegisterStream(1, SpdyStreamPrecedence(1)),
"Stream 1 already registered");
+ EXPECT_EQ(1u, scheduler_.NumRegisteredStreams());
+
EXPECT_QUICHE_BUG(scheduler_.RegisterStream(1, SpdyStreamPrecedence(2)),
"Stream 1 already registered");
+ EXPECT_EQ(1u, scheduler_.NumRegisteredStreams());
scheduler_.RegisterStream(2, SpdyStreamPrecedence(3));
EXPECT_EQ(2u, scheduler_.NumRegisteredStreams());
@@ -76,6 +74,7 @@
// Try redundant unregistration.
EXPECT_QUICHE_BUG(scheduler_.UnregisterStream(1), "Stream 1 not registered");
EXPECT_QUICHE_BUG(scheduler_.UnregisterStream(2), "Stream 2 not registered");
+ EXPECT_EQ(0u, scheduler_.NumRegisteredStreams());
}
TEST_F(PriorityWriteSchedulerTest, RegisterStreamWithHttp2StreamDependency) {
diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc
index 898a869..7f3312e 100644
--- a/quiche/quic/core/quic_session.cc
+++ b/quiche/quic/core/quic_session.cc
@@ -73,7 +73,6 @@
: connection_(connection),
perspective_(connection->perspective()),
visitor_(owner),
- write_blocked_streams_(connection->transport_version()),
config_(config),
stream_id_manager_(perspective(), connection->transport_version(),
kDefaultMaxStreamsPerConnection,
diff --git a/quiche/quic/core/quic_write_blocked_list.cc b/quiche/quic/core/quic_write_blocked_list.cc
index d54ccca..9e53c94 100644
--- a/quiche/quic/core/quic_write_blocked_list.cc
+++ b/quiche/quic/core/quic_write_blocked_list.cc
@@ -9,17 +9,11 @@
namespace quic {
-QuicWriteBlockedList::QuicWriteBlockedList(QuicTransportVersion version)
- : priority_write_scheduler_(QuicVersionUsesCryptoFrames(version)
- ? std::numeric_limits<QuicStreamId>::max()
- : 0),
- last_priority_popped_(0) {
+QuicWriteBlockedList::QuicWriteBlockedList() : last_priority_popped_(0) {
memset(batch_write_stream_id_, 0, sizeof(batch_write_stream_id_));
memset(bytes_left_for_batch_write_, 0, sizeof(bytes_left_for_batch_write_));
}
-QuicWriteBlockedList::~QuicWriteBlockedList() {}
-
bool QuicWriteBlockedList::ShouldYield(QuicStreamId id) const {
for (const auto& stream : static_stream_collection_) {
if (stream.id == id) {
diff --git a/quiche/quic/core/quic_write_blocked_list.h b/quiche/quic/core/quic_write_blocked_list.h
index 30eb337..f0f86a8 100644
--- a/quiche/quic/core/quic_write_blocked_list.h
+++ b/quiche/quic/core/quic_write_blocked_list.h
@@ -25,10 +25,10 @@
// Crypto stream > Headers stream > Data streams by requested priority.
class QUIC_EXPORT_PRIVATE QuicWriteBlockedList {
public:
- explicit QuicWriteBlockedList(QuicTransportVersion version);
+ explicit QuicWriteBlockedList();
QuicWriteBlockedList(const QuicWriteBlockedList&) = delete;
QuicWriteBlockedList& operator=(const QuicWriteBlockedList&) = delete;
- ~QuicWriteBlockedList();
+ ~QuicWriteBlockedList() = default;
bool HasWriteBlockedDataStreams() const {
return priority_write_scheduler_.HasReadyStreams();
diff --git a/quiche/quic/core/quic_write_blocked_list_test.cc b/quiche/quic/core/quic_write_blocked_list_test.cc
index ba02a08..c04b891 100644
--- a/quiche/quic/core/quic_write_blocked_list_test.cc
+++ b/quiche/quic/core/quic_write_blocked_list_test.cc
@@ -20,10 +20,6 @@
constexpr bool kNotIncremental = false;
class QuicWriteBlockedListTest : public QuicTestWithParam<bool> {
- public:
- QuicWriteBlockedListTest()
- : write_blocked_list_(AllSupportedVersions()[0].transport_version) {}
-
protected:
QuicWriteBlockedList write_blocked_list_;
};