function MenuRouterRebuildSubscriber::menuLinksRebuild

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php \Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber::menuLinksRebuild()
  2. 8.9.x core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php \Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber::menuLinksRebuild()
  3. 11.x core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php \Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber::menuLinksRebuild()

Perform menu-specific rebuilding.

1 call to MenuRouterRebuildSubscriber::menuLinksRebuild()
MenuRouterRebuildSubscriber::onRouterRebuild in core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php
Rebuilds the menu links and deletes the local_task cache tag.

File

core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php, line 85

Class

MenuRouterRebuildSubscriber
Rebuilds the default menu links and runs menu-specific code if necessary.

Namespace

Drupal\Core\EventSubscriber

Code

protected function menuLinksRebuild() {
  if ($this->lock
    ->acquire(__FUNCTION__)) {
    try {
      $transaction = $this->connection
        ->startTransaction();
      // Ensure the menu links are up to date.
      $this->menuLinkManager
        ->rebuild();
      // Ignore any database replicas temporarily.
      $this->replicaKillSwitch
        ->trigger();
    } catch (\Exception $e) {
      if (isset($transaction)) {
        $transaction->rollBack();
      }
      Error::logException($this->logger, $e);
    }
    $this->lock
      ->release(__FUNCTION__);
  }
  else {
    // Wait for another request that is already doing this work.
    // We choose to block here since otherwise the router item may not
    // be available during routing resulting in a 404.
    $this->lock
      ->wait(__FUNCTION__);
  }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.