Як вирішити статус індексатора "призупинено" (n у відставанні)


12

Один з індексаторів, налаштований на оновлення за розкладом, блокується в стані "призупинено" і більше не оновлюється.

Вихід bin/magento indexer:status

+----------------------------+------------------+-----------+-------------------------------+---------------------+
| Title                      | Status           | Update On | Schedule Status               | Schedule Updated    |
+----------------------------+------------------+-----------+-------------------------------+---------------------+
| ...                        |                  |           |                               |                     |
| IntegerNet_Solr            | Reindex required | Schedule  | suspended (101028 in backlog) | 2018-09-24 15:28:44 |
| ...                        |                  |           |                               |                     |
+----------------------------+------------------+-----------+-------------------------------+---------------------+

Інші показують idle (0 in backlog)і поточний час у графі "Оновлено розклад", тому графік індексатора, як правило, працює.

Як я можу це вирішити?

Відповіді:


8

Я з'ясував, що статус встановлено \Magento\Framework\Mview\View::suspend()і видалено в \Magento\Framework\Mview\View::resume().

Ці методи закликаються лише \Magento\Indexer\Model\Indexer::reindexAll()призупинити заплановану індексацію до примусового повного перенастроювання та відновити її після цього, або якщо станеться виняток.

Але якщо процес припиняється без винятку, наприклад, вбивається, сегментується або навіть виникає смертельна помилка, яка не підлягає відновленню, стан залишається "призупиненим", і немає можливості відновити його.

Рішення: переконайтеся, що дійсно не працює повний реіндекс, а потім оновіть статус за допомогою SQL.

Ви знайдете всі статуси за допомогою:

select * from mview_state;

і оновіть його так:

update mview_state set status='idle' where view_id='integernet_solr';

Чи вдалося вам знайти повне підтвердження?
Вівек Кумар

1

Для цього вам не потрібно редагувати базу даних, ви можете зробити це за допомогою скидання та індексаторів, а потім повторного деіндексації за допомогою наступних команд;

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
Це було перше, що я спробував, але він лише скидає статус (тобто "триває"), а не стан mview
Fabian Schmengler

Я не впевнений, чи спрацьовував би знову повний реіндекс, але навіть якщо так, я хотів би цього уникнути
Фабіан Шменглер

У мене була така ж проблема в моєму випадку, коли процес було призупинено, вище працював для мене тоді. Це було magento 2.1.x хоч.
Вівек Кумар

Дякую, я трохи експериментую, щоб дізнатися більше :)
Fabian Schmengler

1
Я виявив, що скидання, php бін / магенто індексатор: скидання, не змінив призупинений прапор, але зробив це, щоб я міг перевстановитись належним чином, а це, в свою чергу, змінило прапор назад у режим очікування. Я пропоную використовувати: php bin / magento indexer: скинути запропоновані вище.
jrossi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.