Deprecate --gfe2_restart_flag_quic_use_one_map_in_time_wait_list.

PiperOrigin-RevId: 754952598
diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h
index e24c493..bb8bf60 100755
--- a/quiche/common/quiche_feature_flags_list.h
+++ b/quiche/common/quiche_feature_flags_list.h
@@ -59,7 +59,6 @@
 QUICHE_FLAG(bool, quiche_restart_flag_quic_support_release_time_for_gso, false, false, "If true, QuicGsoBatchWriter will support release time if it is available and the process has the permission to do so.")
 QUICHE_FLAG(bool, quiche_restart_flag_quic_testonly_default_false, false, false, "A testonly restart flag that will always default to false.")
 QUICHE_FLAG(bool, quiche_restart_flag_quic_testonly_default_true, true, true, "A testonly restart flag that will always default to true.")
-QUICHE_FLAG(bool, quiche_restart_flag_quic_use_one_map_in_time_wait_list, true, true, "If true, use a single connection ID data map in time wait list manager.")
 
 #endif
 // clang-format on
diff --git a/quiche/quic/core/quic_time_wait_list_manager.cc b/quiche/quic/core/quic_time_wait_list_manager.cc
index 0699656..8d15548 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.cc
+++ b/quiche/quic/core/quic_time_wait_list_manager.cc
@@ -96,13 +96,6 @@
 QuicTimeWaitListManager::ConnectionIdData* /*absl_nullable*/
 QuicTimeWaitListManager::FindConnectionIdData(
     const QuicConnectionId& connection_id) {
-  if (use_old_connection_id_map_) {
-    auto it = FindConnectionIdDataInMap(connection_id);
-    if (it == connection_id_map_.end()) {
-      return nullptr;
-    }
-    return &it->second;
-  }
   auto it = connection_id_data_map_.find(connection_id);
   if (it == connection_id_data_map_.end()) {
     return nullptr;
@@ -110,39 +103,6 @@
   return it->second.get();
 }
 
-QuicTimeWaitListManager::ConnectionIdMap::iterator
-QuicTimeWaitListManager::FindConnectionIdDataInMap(
-    const QuicConnectionId& connection_id) {
-  QUICHE_DCHECK(use_old_connection_id_map_);
-  auto it = indirect_connection_id_map_.find(connection_id);
-  if (it == indirect_connection_id_map_.end()) {
-    return connection_id_map_.end();
-  }
-  return connection_id_map_.find(it->second);
-}
-
-void QuicTimeWaitListManager::AddConnectionIdDataToMap(
-    const QuicConnectionId& canonical_connection_id, int num_packets,
-    TimeWaitAction action, TimeWaitConnectionInfo info) {
-  QUICHE_DCHECK(use_old_connection_id_map_);
-  for (const auto& cid : info.active_connection_ids) {
-    indirect_connection_id_map_[cid] = canonical_connection_id;
-  }
-  ConnectionIdData data(num_packets, clock_->ApproximateNow(), action,
-                        std::move(info));
-  connection_id_map_.emplace(
-      std::make_pair(canonical_connection_id, std::move(data)));
-}
-
-void QuicTimeWaitListManager::RemoveConnectionDataFromMap(
-    ConnectionIdMap::iterator it) {
-  QUICHE_DCHECK(use_old_connection_id_map_);
-  for (const auto& cid : it->second.info.active_connection_ids) {
-    indirect_connection_id_map_.erase(cid);
-  }
-  connection_id_map_.erase(it);
-}
-
 void QuicTimeWaitListManager::AddConnectionIdToTimeWait(
     TimeWaitAction action, TimeWaitConnectionInfo info) {
   if (info.active_connection_ids.empty()) {
@@ -153,24 +113,6 @@
                 !info.termination_packets.empty());
   QUICHE_DCHECK(action != DO_NOTHING || info.ietf_quic);
 
-  if (use_old_connection_id_map_) {
-    const QuicConnectionId canonical_connection_id =
-        info.active_connection_ids.front();
-    int num_packets = 0;
-    auto it = FindConnectionIdDataInMap(canonical_connection_id);
-    const bool new_connection_id = it == connection_id_map_.end();
-    if (!new_connection_id) {  // Replace record if it is reinserted.
-      QUIC_CODE_COUNT(quic_time_wait_list_manager_reinsert_connection_id);
-      num_packets = it->second.num_packets;
-      RemoveConnectionDataFromMap(it);
-    }
-    TrimTimeWaitListIfNeeded();
-    AddConnectionIdDataToMap(canonical_connection_id, num_packets, action,
-                             std::move(info));
-    return;
-  }
-
-  QUIC_RESTART_FLAG_COUNT(quic_use_one_map_in_time_wait_list);
   TrimTimeWaitListIfNeeded();
 
   quiche::QuicheReferenceCountedPointer<RefCountedConnectionIdData> data(
@@ -191,9 +133,6 @@
 
 bool QuicTimeWaitListManager::IsConnectionIdInTimeWait(
     QuicConnectionId connection_id) const {
-  if (use_old_connection_id_map_) {
-    return indirect_connection_id_map_.contains(connection_id);
-  }
   return connection_id_data_map_.contains(connection_id);
 }
 
@@ -455,9 +394,6 @@
 
 QuicTime QuicTimeWaitListManager::GetOldestConnectionTime() const {
   QUICHE_DCHECK(has_connections());
-  if (use_old_connection_id_map_) {
-    return connection_id_map_.begin()->second.time_added;
-  }
   return connection_id_data_map_.begin()->second->time_added;
 }
 
@@ -486,16 +422,6 @@
   if (!has_connections()) {
     return false;
   }
-  if (use_old_connection_id_map_) {
-    auto it = connection_id_map_.begin();
-    QuicTime oldest_connection_id_time = it->second.time_added;
-    if (oldest_connection_id_time > expiration_time) {
-      // Too recent, don't retire.
-      return false;
-    }
-    RemoveConnectionDataFromMap(it);
-    return true;
-  }
   auto it = connection_id_data_map_.begin();
   QuicTime oldest_connection_id_time = it->second->time_added;
   if (oldest_connection_id_time > expiration_time) {
@@ -528,19 +454,16 @@
     return;
   }
   while (has_connections() &&
-         num_connections() >= static_cast<size_t>(kMaxConnections)) {
+         num_connections_ >= static_cast<size_t>(kMaxConnections)) {
     MaybeExpireOldestConnection(QuicTime::Infinite());
     QUIC_CODE_COUNT(quic_time_wait_list_trim_full);
   }
 
   QUICHE_DCHECK(!has_connections() ||
-                num_connections() < static_cast<size_t>(kMaxConnections));
+                num_connections_ < static_cast<size_t>(kMaxConnections));
 }
 
 bool QuicTimeWaitListManager::has_connections() const {
-  if (use_old_connection_id_map_) {
-    return !connection_id_map_.empty();
-  }
   QUIC_BUG_IF(quic_time_wait_list_num_connections_inconsistent,
               num_connections_ > connection_id_data_map_.size());
   return num_connections_ > 0;
diff --git a/quiche/quic/core/quic_time_wait_list_manager.h b/quiche/quic/core/quic_time_wait_list_manager.h
index b1e7204..706c3db 100644
--- a/quiche/quic/core/quic_time_wait_list_manager.h
+++ b/quiche/quic/core/quic_time_wait_list_manager.h
@@ -16,7 +16,6 @@
 #include <vector>
 
 #include "absl/base/nullability.h"
-#include "absl/container/flat_hash_map.h"
 #include "quiche/quic/core/quic_alarm.h"
 #include "quiche/quic/core/quic_alarm_factory.h"
 #include "quiche/quic/core/quic_blocked_writer_interface.h"
@@ -153,11 +152,7 @@
   // the size is under the configured maximum.
   void TrimTimeWaitListIfNeeded();
 
-  // The number of connections on the time-wait list.
-  size_t num_connections() const {
-    return use_old_connection_id_map_ ? connection_id_map_.size()
-                                      : num_connections_;
-  }
+  size_t num_connections() const { return num_connections_; }
   bool has_connections() const;
 
   // Sends a version negotiation packet for |server_connection_id| and
@@ -317,8 +312,6 @@
   // Returns the time when the first connection was added to the time-wait list.
   QuicTime GetOldestConnectionTime() const;
 
-  const bool use_old_connection_id_map_ =
-      !GetQuicRestartFlag(quic_use_one_map_in_time_wait_list);
   size_t num_connections_ = 0;
 
   // QuicheLinkedHashMap allows lookup by ConnectionId
@@ -329,35 +322,9 @@
       QuicConnectionIdHash>
       connection_id_data_map_;
 
-  using ConnectionIdMap =
-      quiche::QuicheLinkedHashMap<QuicConnectionId, ConnectionIdData,
-                                  QuicConnectionIdHash>;
-  // Do not use find/emplace/erase on this map directly. Use
-  // FindConnectionIdDataInMap, AddConnectionIdDateToMap,
-  // RemoveConnectionDataFromMap instead.
-  ConnectionIdMap connection_id_map_;
-
-  // A connection can have multiple unretired ConnectionIds when it is closed.
-  // These Ids have the same ConnectionIdData entry in connection_id_map_. To
-  // find the entry, look up the cannoical ConnectionId in
-  // indirect_connection_id_map_ first, and look up connection_id_map_ with the
-  // cannoical ConnectionId.
-  absl::flat_hash_map<QuicConnectionId, QuicConnectionId, QuicConnectionIdHash>
-      indirect_connection_id_map_;
-
   // Find data for the given connection_id. Returns nullptr if not found.
   ConnectionIdData* /*absl_nullable*/ FindConnectionIdData(
       const QuicConnectionId& connection_id);
-  // Find an iterator for the given connection_id. Returns
-  // connection_id_map_.end() if none found.
-  ConnectionIdMap::iterator FindConnectionIdDataInMap(
-      const QuicConnectionId& connection_id);
-  // Inserts a ConnectionIdData entry to connection_id_map_.
-  void AddConnectionIdDataToMap(const QuicConnectionId& canonical_connection_id,
-                                int num_packets, TimeWaitAction action,
-                                TimeWaitConnectionInfo info);
-  // Removes a ConnectionIdData entry in connection_id_map_.
-  void RemoveConnectionDataFromMap(ConnectionIdMap::iterator it);
 
   // Pending termination packets that need to be sent out to the peer when we
   // are given a chance to write by the dispatcher.
diff --git a/quiche/quic/core/quic_time_wait_list_manager_test.cc b/quiche/quic/core/quic_time_wait_list_manager_test.cc
index 8257962..883d348 100644
--- a/quiche/quic/core/quic_time_wait_list_manager_test.cc
+++ b/quiche/quic/core/quic_time_wait_list_manager_test.cc
@@ -539,17 +539,10 @@
       QuicTimeWaitListManager::SEND_STATELESS_RESET,
       TimeWaitConnectionInfo(false, nullptr, {cid1, cid3}));
 
-  if (GetQuicRestartFlag(quic_use_one_map_in_time_wait_list)) {
-    EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid1));
-    EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid2));
-    EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid3));
-    EXPECT_EQ(time_wait_list_manager_.num_connections(), 2u);
-  } else {
-    EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid1));
-    EXPECT_FALSE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid2));
-    EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid3));
-    EXPECT_EQ(time_wait_list_manager_.num_connections(), 1u);
-  }
+  EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid1));
+  EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid2));
+  EXPECT_TRUE(time_wait_list_manager_.IsConnectionIdInTimeWait(cid3));
+  EXPECT_EQ(time_wait_list_manager_.num_connections(), 2u);
 }
 
 TEST_F(QuicTimeWaitListManagerTest, ConnectionIdsOrderedByTime) {