• Stan Hu's avatar
    Cache Routable#full_path in RequestStore to reduce duplicate route loads · a0edaa92
    Stan Hu authored
    We see in #27387 that a call to `polymorphic_path` will cause duplicate
    SELECT route calls for each merge request in a milestone. This happens
    because calling `project.namespace.becomes(Namespace)` will instantiate
    a new instance of a Namespace for each merge request, which causes a N+1
    query on the routes table. This change caches the state of the route by
    the specific class and ID, which dramatically eliminates duplicate work.
    a0edaa92
sh-optimize-duplicate-routable-full-path.yml 107 Bytes