diff -Nuar a/vendor/magento/module-indexer/Model/ResourceModel/Indexer/State.php b/vendor/magento/module-indexer/Model/ResourceModel/Indexer/State.php index d1e27be21ae..d0ab887b2e3 100644 --- a/vendor/magento/module-indexer/Model/ResourceModel/Indexer/State.php +++ b/vendor/magento/module-indexer/Model/ResourceModel/Indexer/State.php @@ -5,6 +5,11 @@ */ namespace Magento\Indexer\Model\ResourceModel\Indexer; +use Magento\Framework\Indexer\StateInterface; + +/** + * Resource model for indexer state + */ class State extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb { /** @@ -17,4 +22,22 @@ class State extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb $this->_init('indexer_state', 'state_id'); $this->addUniqueField(['field' => ['indexer_id'], 'title' => __('State for the same indexer')]); } + + /** + * @inheritDoc + */ + protected function prepareDataForUpdate($object) + { + $data = parent::prepareDataForUpdate($object); + + if (isset($data['status']) && StateInterface::STATUS_VALID === $data['status']) { + $data['status'] = $this->getConnection()->getCheckSql( + $this->getConnection()->quoteInto('status = ?', StateInterface::STATUS_WORKING), + $this->getConnection()->quote($data['status']), + 'status' + ); + } + + return $data; + } }