From 0dd82d682039c00af22ffb6c83761f729b1b0489 Mon Sep 17 00:00:00 2001
From: catch <catch@35733.no-reply.drupal.org>
Date: Fri, 15 Sep 2023 07:53:53 +0100
Subject: [PATCH] Issue #315302 by mstrelan, tacituseu, PaulMagrath, coltrane,
 yched, DamienMcKenna, quietone: Node Access Rebuild never finishes (infinite
 loop)

(cherry picked from commit f221e075bba67d4b9d3e22120044fbd941c5d87a)
---
 core/modules/node/node.module | 5 +++--
 core/phpstan-baseline.neon    | 5 -----
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index a1160fa29d66..d9271feb9750 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1179,10 +1179,11 @@ function _node_access_rebuild_batch_operation(&$context) {
     ->execute();
   $node_storage->resetCache($nids);
   $nodes = Node::loadMultiple($nids);
-  foreach ($nodes as $nid => $node) {
+  foreach ($nids as $nid) {
     // To preserve database integrity, only write grants if the node
     // loads successfully.
-    if (!empty($node)) {
+    if (!empty($nodes[$nid])) {
+      $node = $nodes[$nid];
       /** @var \Drupal\node\NodeAccessControlHandlerInterface $access_control_handler */
       $access_control_handler = \Drupal::entityTypeManager()->getAccessControlHandler('node');
       $grants = $access_control_handler->acquireGrants($node);
diff --git a/core/phpstan-baseline.neon b/core/phpstan-baseline.neon
index cf0e1578018b..113f73abdc04 100644
--- a/core/phpstan-baseline.neon
+++ b/core/phpstan-baseline.neon
@@ -1675,11 +1675,6 @@ parameters:
 			count: 1
 			path: modules/node/node.module
 
-		-
-			message: "#^Variable \\$node in empty\\(\\) always exists and is not falsy\\.$#"
-			count: 1
-			path: modules/node/node.module
-
 		-
 			message: "#^Method Drupal\\\\node\\\\ConfigTranslation\\\\NodeTypeMapper\\:\\:setEntity\\(\\) should return bool but return statement is missing\\.$#"
 			count: 1
-- 
GitLab