Como resolver o status do indexador "suspenso" (n no backlog)

12

Um dos indexadores configurados para serem atualizados na programação está bloqueado no estado "suspenso" e não é mais atualizado.

Saída de 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 |
| ...                        |                  |           |                               |                     |
+----------------------------+------------------+-----------+-------------------------------+---------------------+

Outros são exibidos idle (0 in backlog)e o horário atual na coluna "Agendamento atualizado", portanto o agendamento do indexador geralmente está funcionando.

Como posso resolver isso?

Fabian Schmengler
fonte

Respostas:

8

Descobri que o status está definido \Magento\Framework\Mview\View::suspend()e removido \Magento\Framework\Mview\View::resume().

Esses métodos são chamados apenas \Magento\Indexer\Model\Indexer::reindexAll()para suspender a indexação agendada antes de uma reindexação completa forçada e para reiniciá-la posteriormente ou se ocorrer uma exceção.

Mas se o processo for encerrado sem exceção, por exemplo, morto, segfaulted ou até ocorrer um erro fatal não recuperável, o status permanecerá "suspenso" e não haverá meios de retomar o processo.

Solução: verifique se realmente não há reindexos em execução e atualize o status via SQL.

Você encontrará todos os status com:

select * from mview_state;

e atualize-o assim:

update mview_state set status='idle' where view_id='integernet_solr';
Fabian Schmengler
fonte
Você conseguiu encontrar uma solução completa para provas?
Vivek Kumar
1

Você não precisa editar o banco de dados para fazer isso, pode fazer o mesmo redefinindo e indexadores e reindexando-os novamente usando os seguintes comandos;

php bin/magento indexer:reset

php bin/magento indexer:reindex
Vivek Kumar
fonte
11
Essa foi a primeira coisa que eu tentei, mas só redefine o status (ou seja, "em andamento"), não o estado mview
Fabian Schmengler
Eu não tenho certeza se desencadeando uma reindexação completa novamente teria funcionado, mas mesmo assim, eu gostaria de evitá-lo
Fabian Schmengler
Eu tive o mesmo problema no meu caso em que o processo foi suspenso, acima funcionou para mim na época. Foi magento 2.1.x embora.
Vivek Kumar 24/09
Obrigado, eu vou experimentar um pouco para saber mais :)
Fabian Schmengler
11
Eu descobri que o reset, php bin / magento indexer: reset, não alterou o sinalizador suspenso, mas o fez para que eu pudesse reindexar corretamente e que, por sua vez, mudou o sinalizador novamente para inativo. Eu sugiro usar o: php bin / magento indexer: reset sugerido acima.
jrossi