menuLinksRebuild(); Cache::invalidateTags(['local_task']); } /** * Perform menu-specific rebuilding. */ 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__); } } /** * {@inheritdoc} */ public static function getSubscribedEvents(): array { // Run after CachedRouteRebuildSubscriber. $events[RoutingEvents::FINISHED][] = ['onRouterRebuild', 100]; return $events; } }