Retire server connection ID proactively on path validation failure instead of waiting for read/write other packets.

The alarm to retire connection IDs no longer on paths is scheduled at the
end of writing and reading packet. On path validation failure, there could
be no packet to write or read. In this case, the retirement alarm for the connection ID associated with the failed path needs to be proactively scheduled.

PiperOrigin-RevId: 376230134
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index a04c231..ca0298f 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -6858,6 +6858,12 @@
     QUICHE_DCHECK(perspective_ == Perspective::IS_CLIENT);
     alternative_path_.Clear();
   }
+  // The alarm to retire connection IDs no longer on paths is scheduled at the
+  // end of writing and reading packet. On path validation failure, there could
+  // be no packet to write or read. Hence the retirement alarm for the
+  // connection ID associated with the failed path needs to be proactively
+  // scheduled here.
+  RetirePeerIssuedConnectionIdsNoLongerOnPath();
 }
 
 std::vector<QuicConnectionId> QuicConnection::GetActiveServerConnectionIds()