Issue #3385337: Defer menu link rebuilds to reduce queries during module install

Entity hooks (insert/update/delete) triggered immediate menu link rebuilds for each config entity change. During module installation, this caused hundreds of redundant rebuilds (~85,000 extra queries).

Changes:

  • Add MenuLinkRebuildManager service with DestructableInterface to defer rebuilds to end of request via needs_destruction tag
  • Entity hooks now call requestRebuild() instead of immediate rebuild()
  • ExtraLinks::routeExists() preloads all routes in one batch call instead of triggering route rebuilds per individual route check

Tested: drush en with 24 modules (Commerce + OpenY) completes in ~60s instead of hanging indefinitely.

Closes #3385337

Merge request reports

Loading