Cómo resolver el estado del indexador "suspendido" (n en la cartera de pedidos)

12

Uno de los indexadores que están configurados para actualizarse según lo programado está bloqueado en el estado "suspendido" y ya no se actualiza.

Salida 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 |
| ...                        |                  |           |                               |                     |
+----------------------------+------------------+-----------+-------------------------------+---------------------+

Otros muestran idle (0 in backlog)la hora actual en la columna "Programación actualizada", por lo que la programación del indexador generalmente funciona.

¿Como puedo resolver esto?

Fabian Schmengler
fuente

Respuestas:

8

Descubrí que el estado se establece \Magento\Framework\Mview\View::suspend()y se elimina \Magento\Framework\Mview\View::resume().

Estos métodos solo se solicitan \Magento\Indexer\Model\Indexer::reindexAll()para suspender la indexación programada antes de una reindexación completa forzada y para reanudarla después o si se produce una excepción.

Pero si el proceso finaliza sin excepción, por ejemplo, finaliza, se daña o incluso se encuentra con un error fatal no recuperable, el estado permanece "suspendido" y no hay medios para reanudarlo.

Solución: asegúrese de que realmente no se esté reindexando por completo, luego actualice el estado a través de SQL.

Encontrarás todos los estados con:

select * from mview_state;

y actualízalo así:

update mview_state set status='idle' where view_id='integernet_solr';
Fabian Schmengler
fuente
¿Lograste encontrar una solución de prueba completa?
Vivek Kumar
1

No necesita editar la base de datos para hacerlo, puede hacer lo mismo reiniciando e indexando y luego reindexándolos nuevamente usando los siguientes comandos;

php bin/magento indexer:reset

php bin/magento indexer:reindex
Vivek Kumar
fuente
1
Eso fue lo primero que intenté, pero solo restablece el estado (es decir, "en progreso"), no el estado mview
Fabian Schmengler
No estoy seguro de si volver a activar un reindex completo hubiera funcionado, pero aun así, me gustaría evitarlo
Fabian Schmengler
Tuve el mismo problema en mi caso donde se suspendió el proceso, anteriormente funcionó para mí entonces. Sin embargo, fue magento 2.1.x.
Vivek Kumar
Gracias, voy a experimentar un poco para saber más :)
Fabian Schmengler
1
descubrí que el reinicio, php bin / magento indexer: reset, no cambió la bandera suspendida, pero lo hizo para que pudiera reindexar correctamente y eso a su vez cambió la bandera a inactiva. sugiero usar el indexador php bin / magento: restablecer sugerido anteriormente.
jrossi