इंडेक्स स्टेटस "सस्पेंड" (एन बैकलॉग में) कैसे हल करें


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()एक पूर्ण पूर्ण रीइन्डेक्सिंग से पहले अनुसूचित अनुक्रमण को निलंबित करने और बाद में फिर से शुरू करने के लिए या यदि अपवाद होता है, तो इन तरीकों को कहा जाता है।

लेकिन अगर प्रक्रिया को अपवाद के बिना समाप्त किया जाता है, जैसे कि मारे गए, segfaulted या यहां तक ​​कि एक गैर-वसूली योग्य घातक त्रुटि में चलता है, तो स्थिति "निलंबित" रहती है और इसे फिर से शुरू करने का कोई साधन नहीं है।

समाधान: सुनिश्चित करें, वास्तव में कोई पूर्ण reindex चल रहा है, तो SQL के माध्यम से स्थिति को अपडेट करें।

आपको सभी स्थितियां मिलेंगी:

select * from mview_state;

और इसे इस तरह अपडेट करें:

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

क्या आपने पूर्ण प्रमाण समाधान खोजने का प्रबंधन किया था?
विवेक कुमार

1

आपको ऐसा करने के लिए डेटाबेस को संपादित करने की आवश्यकता नहीं है, आप इसे रीसेट और इंडेक्सर्स द्वारा भी कर सकते हैं और फिर उन्हें निम्नलिखित कमांड का पालन करके फिर से रेनडेक्स कर सकते हैं;

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
यह पहली चीज थी जो मैंने कोशिश की थी, लेकिन यह केवल स्थिति (यानी "प्रगति में") को रीसेट करती है, न कि मैव्यू स्टेट को
Fabian Schmengler

मुझे यकीन नहीं है कि अगर एक पूरी रीइंडेक्स को फिर से शुरू करने से काम चल जाता, लेकिन फिर भी, मैं इससे बचना चाहता
Fabian Schmengler

मेरे मामले में मुझे वही समस्या थी जहां प्रक्रिया को निलंबित कर दिया गया था, ऊपर ने मेरे लिए तब काम किया था। हालांकि यह Magento 2.1.x था।
विवेक कुमार

धन्यवाद, मैं और अधिक जानने के लिए थोड़ा प्रयोग करने जा रहा हूं :)
फेबियन शेंगलर

1
मैंने पाया कि रीसेट, php बिन / मैगनेटो इंडेक्सर: रीसेट, ने निलंबित ध्वज को नहीं बदला, लेकिन उसने ऐसा किया जिससे मैं ठीक से रीइन्डेक्स कर सका और बदले में ध्वज को वापस निष्क्रिय कर दिया। मैं सुझाव देता हूं: php bin / magento इंडेक्सर: ऊपर सुझाया गया रीसेट।
15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.