gfe-relnote: Deprecate previously rolled back flag gfe2_reloadable_flag_quic_bbr_app_limited_recovery.
PiperOrigin-RevId: 256236011
Change-Id: I75f87f4495bf59d81774bf3e6b42fbb198e49b6b
diff --git a/quic/core/congestion_control/bbr_sender.cc b/quic/core/congestion_control/bbr_sender.cc
index ef06cbf..65a637c 100644
--- a/quic/core/congestion_control/bbr_sender.cc
+++ b/quic/core/congestion_control/bbr_sender.cc
@@ -125,7 +125,6 @@
flexible_app_limited_(false),
recovery_state_(NOT_IN_RECOVERY),
recovery_window_(max_congestion_window_),
- is_app_limited_recovery_(false),
slower_startup_(false),
rate_based_startup_(false),
startup_rate_reduction_multiplier_(0),
@@ -750,11 +749,6 @@
// Since the conservation phase is meant to be lasting for a whole
// round, extend the current round as if it were started right now.
current_round_trip_end_ = last_sent_packet_;
- if (GetQuicReloadableFlag(quic_bbr_app_limited_recovery) &&
- last_sample_is_app_limited_) {
- QUIC_RELOADABLE_FLAG_COUNT(quic_bbr_app_limited_recovery);
- is_app_limited_recovery_ = true;
- }
}
break;
@@ -768,14 +762,10 @@
// Exit recovery if appropriate.
if (!has_losses && last_acked_packet > end_recovery_at_) {
recovery_state_ = NOT_IN_RECOVERY;
- is_app_limited_recovery_ = false;
}
break;
}
- if (recovery_state_ != NOT_IN_RECOVERY && is_app_limited_recovery_) {
- sampler_.OnAppLimited();
- }
}
// TODO(ianswett): Move this logic into BandwidthSampler.
diff --git a/quic/core/congestion_control/bbr_sender_test.cc b/quic/core/congestion_control/bbr_sender_test.cc
index 6627851..d071ee8 100644
--- a/quic/core/congestion_control/bbr_sender_test.cc
+++ b/quic/core/congestion_control/bbr_sender_test.cc
@@ -706,47 +706,6 @@
EXPECT_GE(sender_->ExportDebugState().min_rtt_timestamp, probe_rtt_start);
}
-// Verify that the first sample after PROBE_RTT is not used as the bandwidth,
-// because the round counter doesn't advance during PROBE_RTT.
-TEST_F(BbrSenderTest, AppLimitedRecoveryNoBandwidthDecrease) {
- SetQuicReloadableFlag(quic_bbr_app_limited_recovery, true);
- CreateDefaultSetup();
- DriveOutOfStartup();
-
- // We have no intention of ever finishing this transfer.
- bbr_sender_.AddBytesToTransfer(100 * 1024 * 1024);
-
- // Wait until the connection enters PROBE_RTT.
- const QuicTime::Delta timeout = QuicTime::Delta::FromSeconds(12);
- bool simulator_result = simulator_.RunUntilOrTimeout(
- [this]() {
- return sender_->ExportDebugState().mode == BbrSender::PROBE_RTT;
- },
- timeout);
- ASSERT_TRUE(simulator_result);
- ASSERT_EQ(BbrSender::PROBE_RTT, sender_->ExportDebugState().mode);
-
- const QuicBandwidth beginning_bw = sender_->BandwidthEstimate();
-
- // Run for most of PROBE_RTT.
- const QuicTime probe_rtt_start = clock_->Now();
- const QuicTime::Delta time_to_exit_probe_rtt =
- kTestRtt + QuicTime::Delta::FromMilliseconds(200);
- simulator_.RunFor(0.60 * time_to_exit_probe_rtt);
- EXPECT_EQ(BbrSender::PROBE_RTT, sender_->ExportDebugState().mode);
- // Lose a packet before exiting PROBE_RTT, which puts us in packet
- // conservation and then continue there for a while and ensure the bandwidth
- // estimate doesn't decrease.
- for (int i = 0; i < 20; ++i) {
- receiver_.DropNextIncomingPacket();
- simulator_.RunFor(0.9 * kTestRtt);
- // Ensure the bandwidth didn't decrease and the samples are app limited.
- EXPECT_LE(beginning_bw, sender_->BandwidthEstimate());
- EXPECT_TRUE(sender_->ExportDebugState().last_sample_is_app_limited);
- }
- EXPECT_GE(sender_->ExportDebugState().min_rtt_timestamp, probe_rtt_start);
-}
-
// Verify that the connection enters and exits PROBE_RTT correctly.
TEST_F(BbrSenderTest, ProbeRttBDPBasedCWNDTarget) {
CreateDefaultSetup();