"Askıya alındı" dizin oluşturucu durumu nasıl çözülür (biriktirme listesinde n)


12

Zamanlamaya göre güncelleştirilmek üzere yapılandırılan dizinleyicilerden biri "askıya alındı" durumunda kilitli ve artık güncelleştirilmiyor.

Çıktı 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 |
| ...                        |                  |           |                               |                     |
+----------------------------+------------------+-----------+-------------------------------+---------------------+

Diğerleri idle (0 in backlog)ve "Zamanlama Güncelleme" sütununda geçerli saati gösterir , bu nedenle dizin oluşturucu zamanlaması genellikle çalışır.

Bunu Nasıl Çözebilirim?

Yanıtlar:


8

Durumun ayarlandığını \Magento\Framework\Mview\View::suspend()ve kaldırıldığını öğrendim \Magento\Framework\Mview\View::resume().

Bu yöntemler yalnızca \Magento\Indexer\Model\Indexer::reindexAll()zamanlanmış dizin oluşturmayı zorla yapılan tam yeniden dizine ekleme işleminden önce askıya almak ve daha sonra veya bir istisna oluşursa devam ettirmek için çağrılır .

Ancak, işlem istisnasız sonlandırılırsa, örneğin öldürülür, segfaulte edilir veya hatta kurtarılamaz bir ölümcül hatayla karşılaşırsa, durum "askıda kalır" ve devam ettirmenin bir yolu yoktur.

Çözüm: Tam bir reindex'in gerçekten çalışmadığından emin olun, ardından durumu SQL yoluyla güncelleyin.

Tüm durumları şununla bulacaksınız:

select * from mview_state;

ve şu şekilde güncelleyin:

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

Tam bir kanıt çözümü bulmayı başardınız mı?
— Vivek Kumar

1

Bunu yapmak için veritabanını düzenlemenize gerek yoktur, aşağıdaki komutları kullanarak ve dizinleyicileri sıfırlayarak ve sonra yeniden dizin oluşturarak aynı şeyi yapabilirsiniz;

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
Denediğim ilk şey buydu, ama sadece durumu sıfırlıyor (yani "devam ediyor"), mview devleti değil
— Fabian Schmengler

Tam bir reindex'i tekrar tetiklemenin işe yarayacağından emin değilim, ancak öyle olsa bile, bundan kaçınmak istiyorum
— Fabian Schmengler

Sürecin askıya alındığı davamda da aynı sorunu yaşadım, yukarıda benim için çalıştı. Magento 2.1.x olsa idi.
— Vivek Kumar

Teşekkürler, daha fazla bilgi edinmek için biraz deney yapacağım :)
— Fabian Schmengler

1
sıfırlama, php bin / magento indexer: reset, askıya alınan bayrağı değiştirmedi, ama düzgün reindex olabilir ve sırayla bayrağı boşta değiştirdi yaptı. i kullanmanızı öneririz: php bin / magento dizinleyici: sıfırlama yukarıda önerilen.
— jrossi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.