วิธีแก้สถานะตัวทำดัชนี“ ถูกระงับ” (n in backlog)


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';

คุณจัดการเพื่อหาวิธีแก้ปัญหาพิสูจน์เต็ม?
Vivek Kumar

1

คุณไม่จำเป็นต้องแก้ไขฐานข้อมูลเพื่อทำเช่นนั้นคุณสามารถทำสิ่งเดียวกันได้โดยการรีเซ็ตและตัวทำดัชนีแล้วทำการทำดัชนีใหม่อีกครั้งโดยใช้คำสั่งต่อไปนี้

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
นั่นเป็นสิ่งแรกที่ฉันพยายาม แต่จะรีเซ็ตสถานะเท่านั้น (เช่น "กำลังดำเนินการ") ไม่ใช่สถานะ mview
Fabian Schmengler

ฉันไม่แน่ใจว่าจะเรียกเรนเด็กซ์เต็มรูปแบบอีกครั้งจะทำงานได้หรือไม่ แต่ถึงอย่างนั้นฉันก็อยากจะหลีกเลี่ยงมัน
Fabian Schmengler

ฉันมีปัญหาเดียวกันในกรณีของฉันที่กระบวนการถูกระงับดังกล่าวข้างต้นทำงานให้ฉันแล้ว มันเป็นวีโอไอพี 2.1.x
Vivek Kumar

ขอบคุณฉันกำลังจะไปทดสอบบิตเพื่อหาข้อมูลเพิ่มเติม :)
Fabian Schmengler

1
ฉันพบว่าการรีเซ็ต, ตัวทำดัชนี php bin / magento: รีเซ็ต, ไม่ได้เปลี่ยนค่าสถานะที่ถูกระงับ แต่ไม่ได้ทำเพื่อให้ฉันสามารถทำดัชนีใหม่อย่างถูกต้องและในที่สุดก็เปลี่ยนค่าสถานะกลับเป็นไม่ได้ใช้งาน ฉันขอแนะนำให้ใช้: ดัชนี php bin / magento: รีเซ็ตแนะนำข้างต้น
jrossi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.