"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.