Deprecate gfe2_reloadable_flag_quic_flush_after_coalesce_higher_space_packets. PiperOrigin-RevId: 449181836
diff --git a/quiche/quic/core/quic_connection.cc b/quiche/quic/core/quic_connection.cc index 2b611f7..af9eb4a 100644 --- a/quiche/quic/core/quic_connection.cc +++ b/quiche/quic/core/quic_connection.cc
@@ -4874,29 +4874,19 @@ } } - if (connection_->flush_after_coalesce_higher_space_packets_) { - // INITIAL or HANDSHAKE retransmission could cause peer to derive new - // keys, such that the buffered undecryptable packets may be processed. - // This endpoint would derive an inflated RTT sample when receiving ACKs - // of those undecryptable packets. To mitigate this, tries to coalesce as - // many higher space packets as possible (via for loop inside - // MaybeCoalescePacketOfHigherSpace) to fill the remaining space in the - // coalescer. - QUIC_RELOADABLE_FLAG_COUNT( - quic_flush_after_coalesce_higher_space_packets); - if (connection_->version().CanSendCoalescedPackets()) { - connection_->MaybeCoalescePacketOfHigherSpace(); - } - connection_->packet_creator_.Flush(); - if (connection_->version().CanSendCoalescedPackets()) { - connection_->FlushCoalescedPacket(); - } - } else { - connection_->packet_creator_.Flush(); - if (connection_->version().CanSendCoalescedPackets()) { - connection_->MaybeCoalescePacketOfHigherSpace(); - connection_->FlushCoalescedPacket(); - } + // INITIAL or HANDSHAKE retransmission could cause peer to derive new + // keys, such that the buffered undecryptable packets may be processed. + // This endpoint would derive an inflated RTT sample when receiving ACKs + // of those undecryptable packets. To mitigate this, tries to coalesce as + // many higher space packets as possible (via for loop inside + // MaybeCoalescePacketOfHigherSpace) to fill the remaining space in the + // coalescer. + if (connection_->version().CanSendCoalescedPackets()) { + connection_->MaybeCoalescePacketOfHigherSpace(); + } + connection_->packet_creator_.Flush(); + if (connection_->version().CanSendCoalescedPackets()) { + connection_->FlushCoalescedPacket(); } connection_->FlushPackets(); if (!handshake_packet_sent_ && connection_->handshake_packet_sent_) { @@ -5980,8 +5970,7 @@ } if (fill_coalesced_packet_) { // Make sure MaybeCoalescePacketOfHigherSpace is not re-entrant. - QUIC_BUG_IF(quic_coalesce_packet_reentrant, - flush_after_coalesce_higher_space_packets_); + QUIC_BUG(quic_coalesce_packet_reentrant); return; } for (EncryptionLevel retransmission_level :
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h index 09cef3d..8bb2629 100644 --- a/quiche/quic/core/quic_connection.h +++ b/quiche/quic/core/quic_connection.h
@@ -2250,9 +2250,6 @@ // Enable this via reloadable flag once this feature is complete. bool connection_migration_use_new_cid_ = false; - const bool flush_after_coalesce_higher_space_packets_ = - GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets); - // If true, send connection close packet on INVALID_VERSION. bool send_connection_close_for_invalid_version_ = false;
diff --git a/quiche/quic/core/quic_connection_test.cc b/quiche/quic/core/quic_connection_test.cc index b8cac26..2154d94 100644 --- a/quiche/quic/core/quic_connection_test.cc +++ b/quiche/quic/core/quic_connection_test.cc
@@ -14978,21 +14978,12 @@ connection_.GetAckAlarm()->deadline()); // ACK is not throttled by amplification limit, and SHLO is bundled. Also // HANDSHAKE + 1RTT packets get coalesced. - if (GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) { - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3); - } else { - EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(2); - } + EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(3); // ACK alarm fires. clock_.AdvanceTime(kAlarmGranularity); connection_.GetAckAlarm()->Fire(); - if (GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) { - // Verify 1-RTT packet is coalesced. - EXPECT_EQ(0x04040404u, writer_->final_bytes_of_last_packet()); - } else { - // Verify HANDSHAKE packet is coalesced with INITIAL ACK + SHLO. - EXPECT_EQ(0x03030303u, writer_->final_bytes_of_last_packet()); - } + // Verify 1-RTT packet is coalesced. + EXPECT_EQ(0x04040404u, writer_->final_bytes_of_last_packet()); // Only the first packet in the coalesced packet has been processed, // verify SHLO is bundled with INITIAL ACK. EXPECT_EQ(1u, writer_->ack_frames().size()); @@ -15003,16 +14994,12 @@ writer_->framer()->ProcessPacket(*packet); EXPECT_EQ(0u, writer_->ack_frames().size()); EXPECT_EQ(1u, writer_->crypto_frames().size()); - if (GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) { - // Process the coalesced 1-RTT packet. - ASSERT_TRUE(writer_->coalesced_packet() != nullptr); - packet = writer_->coalesced_packet()->Clone(); - writer_->framer()->ProcessPacket(*packet); - EXPECT_EQ(0u, writer_->crypto_frames().size()); - EXPECT_EQ(1u, writer_->stream_frames().size()); - } else { - ASSERT_TRUE(writer_->coalesced_packet() == nullptr); - } + // Process the coalesced 1-RTT packet. + ASSERT_TRUE(writer_->coalesced_packet() != nullptr); + packet = writer_->coalesced_packet()->Clone(); + writer_->framer()->ProcessPacket(*packet); + EXPECT_EQ(0u, writer_->crypto_frames().size()); + EXPECT_EQ(1u, writer_->stream_frames().size()); // Received INITIAL 3. EXPECT_CALL(*send_algorithm_, OnPacketSent(_, _, _, _, _)).Times(AnyNumber()); @@ -15393,10 +15380,6 @@ auto packet = writer_->coalesced_packet()->Clone(); writer_->framer()->ProcessPacket(*packet); EXPECT_EQ(1u, writer_->crypto_frames().size()); - if (!GetQuicReloadableFlag(quic_flush_after_coalesce_higher_space_packets)) { - ASSERT_TRUE(writer_->coalesced_packet() == nullptr); - return; - } // Process 1-RTT packet. ASSERT_TRUE(writer_->coalesced_packet() != nullptr); packet = writer_->coalesced_packet()->Clone();
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h index 3278596..b515e22 100644 --- a/quiche/quic/core/quic_flags_list.h +++ b/quiche/quic/core/quic_flags_list.h
@@ -59,8 +59,6 @@ QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_not_bundle_ack_on_alternative_path, true) // If true, enable server retransmittable on wire PING. QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_enable_server_on_wire_ping, true) -// If true, flush creator after coalesce packet of higher space. -QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_flush_after_coalesce_higher_space_packets, true) // If true, flush pending frames as well as pending padding bytes on connection migration. QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_flush_pending_frames_and_padding_bytes_on_migration, true) // If true, ietf connection migration is no longer conditioned on connection option RVCM.