gfe-relnote: Change quic::SendTimeState.bytes_in_flight to include the bytes from the packet just sent. Protected by v2 flag --gfe2_reloadable_flag_quic_bw_sampler_remove_packets_once_per_congestion_event2.
PiperOrigin-RevId: 286619274
Change-Id: Ic9659f61ce5b8f786e5619eb48ddfde9978d95d9
diff --git a/quic/core/congestion_control/bandwidth_sampler.cc b/quic/core/congestion_control/bandwidth_sampler.cc
index a4cdc33..8ad5459 100644
--- a/quic/core/congestion_control/bandwidth_sampler.cc
+++ b/quic/core/congestion_control/bandwidth_sampler.cc
@@ -67,7 +67,7 @@
total_bytes_acked_after_last_ack_event_(0) {
if (remove_packets_once_per_congestion_event_) {
QUIC_RELOADABLE_FLAG_COUNT(
- quic_bw_sampler_remove_packets_once_per_congestion_event);
+ quic_bw_sampler_remove_packets_once_per_congestion_event2);
}
}
@@ -121,7 +121,7 @@
}
bool success = connection_state_map_.Emplace(packet_number, sent_time, bytes,
- bytes_in_flight, *this);
+ bytes_in_flight + bytes, *this);
QUIC_BUG_IF(!success) << "BandwidthSampler failed to insert the packet "
"into the map, most likely because it's already "
"in it.";
diff --git a/quic/core/congestion_control/bandwidth_sampler.h b/quic/core/congestion_control/bandwidth_sampler.h
index c7c9862..d2e0c7b 100644
--- a/quic/core/congestion_control/bandwidth_sampler.h
+++ b/quic/core/congestion_control/bandwidth_sampler.h
@@ -64,7 +64,8 @@
// Total number of lost bytes at the time the packet was sent.
QuicByteCount total_bytes_lost;
- // Total number of inflight bytes right before the time the packet was sent.
+ // Total number of inflight bytes at the time the packet was sent.
+ // Includes the packet itself.
// It should be equal to |total_bytes_sent| minus the sum of
// |total_bytes_acked|, |total_bytes_lost| and total neutered bytes.
QuicByteCount bytes_in_flight;
@@ -339,10 +340,10 @@
// Snapshot constructor. Records the current state of the bandwidth
// sampler.
- // |prior_bytes_in_flight| is the bytes in flight before the packet is sent.
+ // |bytes_in_flight| is the bytes in flight right after the packet is sent.
ConnectionStateOnSentPacket(QuicTime sent_time,
QuicByteCount size,
- QuicByteCount prior_bytes_in_flight,
+ QuicByteCount bytes_in_flight,
const BandwidthSampler& sampler)
: sent_time(sent_time),
size(size),
@@ -355,7 +356,7 @@
sampler.total_bytes_acked_,
sampler.total_bytes_lost_,
sampler.remove_packets_once_per_congestion_event()
- ? prior_bytes_in_flight
+ ? bytes_in_flight
: 0) {}
// Default constructor. Required to put this structure into
@@ -426,9 +427,9 @@
MaxAckHeightTracker max_ack_height_tracker_;
QuicByteCount total_bytes_acked_after_last_ack_event_;
- // Latched value of quic_bw_sampler_remove_packets_once_per_congestion_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_event);
+ quic_bw_sampler_remove_packets_once_per_congestion_event2);
};
} // namespace quic
diff --git a/quic/core/congestion_control/bandwidth_sampler_test.cc b/quic/core/congestion_control/bandwidth_sampler_test.cc
index a2b858f..fc51db2 100644
--- a/quic/core/congestion_control/bandwidth_sampler_test.cc
+++ b/quic/core/congestion_control/bandwidth_sampler_test.cc
@@ -193,6 +193,15 @@
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);
+ }
clock_.AdvanceTime(time_between_packets);
}
}