gfe-relnote: (n/a) Deprecate --gfe2_reloadable_flag_quic_bw_sampler_remove_packets_once_per_congestion_event2.

PiperOrigin-RevId: 296882742
Change-Id: I9d85c417654c90fb2ce99c850b9f57bae93674d3
diff --git a/quic/core/congestion_control/bandwidth_sampler.cc b/quic/core/congestion_control/bandwidth_sampler.cc
index 1a56e62..dc8509f 100644
--- a/quic/core/congestion_control/bandwidth_sampler.cc
+++ b/quic/core/congestion_control/bandwidth_sampler.cc
@@ -85,10 +85,6 @@
       max_ack_height_tracker_(max_height_tracker_window_length),
       total_bytes_acked_after_last_ack_event_(0),
       overestimate_avoidance_(false) {
-  if (remove_packets_once_per_congestion_event_) {
-    QUIC_RELOADABLE_FLAG_COUNT(
-        quic_bw_sampler_remove_packets_once_per_congestion_event2);
-  }
   if (one_bw_sample_per_ack_event_) {
     QUIC_RELOADABLE_FLAG_COUNT(quic_one_bw_sample_per_ack_event2);
   }
@@ -283,9 +279,6 @@
   }
   BandwidthSample sample =
       OnPacketAcknowledgedInner(ack_time, packet_number, *sent_packet_pointer);
-  if (!remove_packets_once_per_congestion_event_) {
-    connection_state_map_.Remove(packet_number);
-  }
   return sample;
 }
 
@@ -403,20 +396,13 @@
   // QUIC_BUG when removal fails.
   SendTimeState send_time_state;
 
-  if (remove_packets_once_per_congestion_event_) {
-    total_bytes_lost_ += bytes_lost;
-    ConnectionStateOnSentPacket* sent_packet_pointer =
-        connection_state_map_.GetEntry(packet_number);
-    if (sent_packet_pointer != nullptr) {
-      SentPacketToSendTimeState(*sent_packet_pointer, &send_time_state);
-    }
-  } else {
-    send_time_state.is_valid = connection_state_map_.Remove(
-        packet_number, [&](const ConnectionStateOnSentPacket& sent_packet) {
-          total_bytes_lost_ += sent_packet.size;
-          SentPacketToSendTimeState(sent_packet, &send_time_state);
-        });
+  total_bytes_lost_ += bytes_lost;
+  ConnectionStateOnSentPacket* sent_packet_pointer =
+      connection_state_map_.GetEntry(packet_number);
+  if (sent_packet_pointer != nullptr) {
+    SentPacketToSendTimeState(*sent_packet_pointer, &send_time_state);
   }
+
   return send_time_state;
 }
 
@@ -438,20 +424,7 @@
   // QuicSentPacketManager::RetransmitCryptoPackets retransmits a crypto packet,
   // the packet is removed from QuicUnackedPacketMap's inflight, but is not
   // marked as acked or lost in the BandwidthSampler.
-  if (remove_packets_once_per_congestion_event_) {
-    connection_state_map_.RemoveUpTo(least_unacked);
-    return;
-  }
-  while (!connection_state_map_.IsEmpty() &&
-         connection_state_map_.first_packet() < least_unacked) {
-    connection_state_map_.Remove(
-        connection_state_map_.first_packet(),
-        [&](const ConnectionStateOnSentPacket& sent_packet) {
-          // Obsoleted packets as either acked or lost but the sampler doesn't
-          // know. We count them as acked here, since most packets are acked.
-          total_bytes_acked_ += sent_packet.size;
-        });
-  }
+  connection_state_map_.RemoveUpTo(least_unacked);
 }
 
 QuicByteCount BandwidthSampler::total_bytes_sent() const {
diff --git a/quic/core/congestion_control/bandwidth_sampler.h b/quic/core/congestion_control/bandwidth_sampler.h
index 210a219..6f27ddd 100644
--- a/quic/core/congestion_control/bandwidth_sampler.h
+++ b/quic/core/congestion_control/bandwidth_sampler.h
@@ -365,10 +365,6 @@
     max_ack_height_tracker_.Reset(new_height, new_time);
   }
 
-  bool remove_packets_once_per_congestion_event() const {
-    return remove_packets_once_per_congestion_event_;
-  }
-
   bool one_bw_sample_per_ack_event() const {
     return one_bw_sample_per_ack_event_;
   }
@@ -471,9 +467,7 @@
                           sampler.total_bytes_sent_,
                           sampler.total_bytes_acked_,
                           sampler.total_bytes_lost_,
-                          sampler.remove_packets_once_per_congestion_event()
-                              ? bytes_in_flight
-                              : 0) {}
+                          bytes_in_flight) {}
 
     // Default constructor.  Required to put this structure into
     // PacketNumberIndexedQueue.
@@ -563,14 +557,8 @@
   MaxAckHeightTracker max_ack_height_tracker_;
   QuicByteCount total_bytes_acked_after_last_ack_event_;
 
-  // Latched value of quic_bw_sampler_remove_packets_once_per_congestion_event2.
-  const bool remove_packets_once_per_congestion_event_ = GetQuicReloadableFlag(
-      quic_bw_sampler_remove_packets_once_per_congestion_event2);
-
-  // Latched value of quic_bw_sampler_remove_packets_once_per_congestion_event2
-  // and quic_one_bw_sample_per_ack_event2.
+  // Latched value of quic_one_bw_sample_per_ack_event2.
   const bool one_bw_sample_per_ack_event_ =
-      remove_packets_once_per_congestion_event_ &&
       GetQuicReloadableFlag(quic_one_bw_sample_per_ack_event2);
 
   // True if --quic_avoid_overestimate_bandwidth_with_aggregation=true and
diff --git a/quic/core/congestion_control/bandwidth_sampler_test.cc b/quic/core/congestion_control/bandwidth_sampler_test.cc
index 2529ba1..c523654 100644
--- a/quic/core/congestion_control/bandwidth_sampler_test.cc
+++ b/quic/core/congestion_control/bandwidth_sampler_test.cc
@@ -203,9 +203,8 @@
     QuicBandwidth current_sample = AckPacket(i);
     EXPECT_EQ(expected_bandwidth, current_sample);
   }
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(25));
-  }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(25));
+
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   EXPECT_EQ(0u, bytes_in_flight_);
 }
@@ -263,15 +262,13 @@
       EXPECT_EQ(PacketsToBytes(1), send_time_state.total_bytes_acked);
       EXPECT_EQ(PacketsToBytes(2), send_time_state.total_bytes_lost);
     }
-    if (sampler_.remove_packets_once_per_congestion_event()) {
-      // This equation works because there is no neutered bytes.
-      EXPECT_EQ(send_time_state.total_bytes_sent -
-                    send_time_state.total_bytes_acked -
-                    send_time_state.total_bytes_lost,
-                send_time_state.bytes_in_flight);
-    } else {
-      EXPECT_EQ(0u, send_time_state.bytes_in_flight);
-    }
+
+    // This equation works because there is no neutered bytes.
+    EXPECT_EQ(send_time_state.total_bytes_sent -
+                  send_time_state.total_bytes_acked -
+                  send_time_state.total_bytes_lost,
+              send_time_state.bytes_in_flight);
+
     clock_.AdvanceTime(time_between_packets);
   }
 }
@@ -293,9 +290,8 @@
     EXPECT_EQ(expected_bandwidth, last_bandwidth) << "i is " << i;
     clock_.AdvanceTime(time_between_packets);
   }
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
-  }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
+
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   EXPECT_EQ(0u, bytes_in_flight_);
 }
@@ -336,9 +332,8 @@
     }
     clock_.AdvanceTime(time_between_packets);
   }
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
-  }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
+
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   EXPECT_EQ(0u, bytes_in_flight_);
 }
@@ -386,10 +381,8 @@
     }
     clock_.AdvanceTime(time_between_packets);
   }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
 
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
-  }
   // Since only congestion controlled packets are entered into the map, it has
   // to be empty at this point.
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
@@ -418,9 +411,9 @@
     clock_.AdvanceTime(ridiculously_small_time_delta);
   }
   EXPECT_EQ(expected_bandwidth, last_bandwidth);
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
-  }
+
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(41));
+
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   EXPECT_EQ(0u, bytes_in_flight_);
 }
@@ -450,9 +443,8 @@
     EXPECT_EQ(expected_bandwidth, last_bandwidth);
     clock_.AdvanceTime(time_between_packets);
   }
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(61));
-  }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(61));
+
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   EXPECT_EQ(0u, bytes_in_flight_);
 }
@@ -502,10 +494,8 @@
     EXPECT_EQ(expected_bandwidth, last_bandwidth);
     clock_.AdvanceTime(time_between_packets);
   }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(81));
 
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(81));
-  }
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   EXPECT_EQ(0u, bytes_in_flight_);
 }
@@ -559,14 +549,13 @@
   sampler_.RemoveObsoletePackets(QuicPacketNumber(4));
   EXPECT_EQ(2u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   sampler_.OnPacketLost(QuicPacketNumber(4), kRegularPacketSize);
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(5));
-  }
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(5));
+
   EXPECT_EQ(1u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
   AckPacket(5);
-  if (sampler_.remove_packets_once_per_congestion_event()) {
-    sampler_.RemoveObsoletePackets(QuicPacketNumber(6));
-  }
+
+  sampler_.RemoveObsoletePackets(QuicPacketNumber(6));
+
   EXPECT_EQ(0u, BandwidthSamplerPeer::GetNumberOfTrackedPackets(sampler_));
 }
 
diff --git a/quic/core/congestion_control/bbr2_misc.cc b/quic/core/congestion_control/bbr2_misc.cc
index 352e7e6..6c3ea73 100644
--- a/quic/core/congestion_control/bbr2_misc.cc
+++ b/quic/core/congestion_control/bbr2_misc.cc
@@ -164,26 +164,21 @@
     }
   }
 
-  if (!bandwidth_sampler_.remove_packets_once_per_congestion_event()) {
-    congestion_event->bytes_in_flight = bytes_in_flight();
-  }
-
   congestion_event->bytes_acked = total_bytes_acked() - prior_bytes_acked;
   congestion_event->bytes_lost = total_bytes_lost() - prior_bytes_lost;
-  if (bandwidth_sampler_.remove_packets_once_per_congestion_event()) {
-    if (congestion_event->prior_bytes_in_flight >=
-        congestion_event->bytes_acked + congestion_event->bytes_lost) {
-      congestion_event->bytes_in_flight =
-          congestion_event->prior_bytes_in_flight -
-          congestion_event->bytes_acked - congestion_event->bytes_lost;
-    } else {
-      QUIC_LOG_FIRST_N(ERROR, 1)
-          << "prior_bytes_in_flight:" << congestion_event->prior_bytes_in_flight
-          << " is smaller than the sum of bytes_acked:"
-          << congestion_event->bytes_acked
-          << " and bytes_lost:" << congestion_event->bytes_lost;
-      congestion_event->bytes_in_flight = 0;
-    }
+
+  if (congestion_event->prior_bytes_in_flight >=
+      congestion_event->bytes_acked + congestion_event->bytes_lost) {
+    congestion_event->bytes_in_flight =
+        congestion_event->prior_bytes_in_flight -
+        congestion_event->bytes_acked - congestion_event->bytes_lost;
+  } else {
+    QUIC_LOG_FIRST_N(ERROR, 1)
+        << "prior_bytes_in_flight:" << congestion_event->prior_bytes_in_flight
+        << " is smaller than the sum of bytes_acked:"
+        << congestion_event->bytes_acked
+        << " and bytes_lost:" << congestion_event->bytes_lost;
+    congestion_event->bytes_in_flight = 0;
   }
 
   if (congestion_event->bytes_lost > 0) {
diff --git a/quic/core/congestion_control/bbr2_misc.h b/quic/core/congestion_control/bbr2_misc.h
index 191790b..500226e 100644
--- a/quic/core/congestion_control/bbr2_misc.h
+++ b/quic/core/congestion_control/bbr2_misc.h
@@ -404,11 +404,6 @@
     return bandwidth_sampler_.total_bytes_sent();
   }
 
-  QuicByteCount bytes_in_flight() const {
-    DCHECK(!bandwidth_sampler_.remove_packets_once_per_congestion_event());
-    return total_bytes_sent() - total_bytes_acked() - total_bytes_lost();
-  }
-
   int64_t loss_events_in_round() const { return loss_events_in_round_; }
 
   bool always_count_loss_events() const { return always_count_loss_events_; }
diff --git a/quic/core/congestion_control/bbr_sender_test.cc b/quic/core/congestion_control/bbr_sender_test.cc
index 2b262c9..55ac77c 100644
--- a/quic/core/congestion_control/bbr_sender_test.cc
+++ b/quic/core/congestion_control/bbr_sender_test.cc
@@ -966,9 +966,7 @@
 
 // Test exiting STARTUP earlier upon loss due to the LRTT connection option.
 TEST_F(BbrSenderTest, SimpleTransferLRTTStartup) {
-  if (!GetQuicReloadableFlag(
-          quic_bw_sampler_remove_packets_once_per_congestion_event2) ||
-      !GetQuicReloadableFlag(quic_one_bw_sample_per_ack_event2) ||
+  if (!GetQuicReloadableFlag(quic_one_bw_sample_per_ack_event2) ||
       !GetQuicReloadableFlag(quic_bbr_loss_based_startup_exit)) {
     return;
   }
@@ -1000,9 +998,7 @@
 
 // Test exiting STARTUP earlier upon loss due to the LRTT connection option.
 TEST_F(BbrSenderTest, SimpleTransferLRTTStartupSmallBuffer) {
-  if (!GetQuicReloadableFlag(
-          quic_bw_sampler_remove_packets_once_per_congestion_event2) ||
-      !GetQuicReloadableFlag(quic_one_bw_sample_per_ack_event2) ||
+  if (!GetQuicReloadableFlag(quic_one_bw_sample_per_ack_event2) ||
       !GetQuicReloadableFlag(quic_bbr_loss_based_startup_exit)) {
     return;
   }