diff --git a/vendor/magento/module-indexer/Model/Indexer.php b/vendor/magento/module-indexer/Model/Indexer.php
index ac8b9590e58f..7be1d5a3a9e2 100644
--- a/vendor/magento/module-indexer/Model/Indexer.php
+++ b/vendor/magento/module-indexer/Model/Indexer.php
@@ -441,8 +441,10 @@ public function reindexAll()
             }
             try {
                 $this->getActionInstance()->executeFull();
-                $state->setStatus(StateInterface::STATUS_VALID);
-                $state->save();
+                if ($this->workingStateProvider->isWorking($this->getId())) {
+                    $state->setStatus(StateInterface::STATUS_VALID);
+                    $state->save();
+                }
                 if (!empty($sharedIndexers)) {
                     $this->resumeSharedViews($sharedIndexers);
                 }
diff --git a/vendor/magento/module-indexer/Model/Processor.php b/vendor/magento/module-indexer/Model/Processor.php
index 78b8fa070b15..7846421daa70 100644
--- a/vendor/magento/module-indexer/Model/Processor.php
+++ b/vendor/magento/module-indexer/Model/Processor.php
@@ -59,7 +59,7 @@ public function __construct(
         IndexerInterfaceFactory $indexerFactory,
         Indexer\CollectionFactory $indexersFactory,
         ProcessorInterface $mviewProcessor,
-        MakeSharedIndexValid $makeSharedValid = null
+        ?MakeSharedIndexValid $makeSharedValid = null
     ) {
         $this->config = $config;
         $this->indexerFactory = $indexerFactory;
@@ -86,9 +86,11 @@ public function reindexAllInvalid()
                 $sharedIndex = $indexerConfig['shared_index'] ?? null;
                 if (!in_array($sharedIndex, $this->sharedIndexesComplete)) {
                     $indexer->reindexAll();
-
-                    if (!empty($sharedIndex) && $this->makeSharedValid->execute($sharedIndex)) {
-                        $this->sharedIndexesComplete[] = $sharedIndex;
+                    $indexer->load($indexer->getId());
+                    if ($indexer->isValid()) {
+                        if (!empty($sharedIndex) && $this->makeSharedValid->execute($sharedIndex)) {
+                            $this->sharedIndexesComplete[] = $sharedIndex;
+                        }
                     }
                 }
             }
