Cách giải quyết tình trạng của người lập chỉ mục


12

Một trong những bộ chỉ mục được cấu hình để cập nhật theo lịch sẽ bị khóa trong trạng thái "bị treo" và không được cập nhật nữa.

Đầu ra của 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 |
| ...                        |                  |           |                               |                     |
+----------------------------+------------------+-----------+-------------------------------+---------------------+

Những người khác hiển thị idle (0 in backlog)và thời gian hiện tại trong cột "Lịch cập nhật", vì vậy lịch trình lập chỉ mục thường hoạt động.

Làm sao tôi có thể giải quyết việc này?

Câu trả lời:


7

Tôi phát hiện ra rằng trạng thái được đặt \Magento\Framework\Mview\View::suspend()và xóa \Magento\Framework\Mview\View::resume().

Các phương thức này chỉ được gọi \Magento\Indexer\Model\Indexer::reindexAll()để tạm dừng lập chỉ mục theo lịch trình trước khi reindexing đầy đủ bắt buộc và tiếp tục lại sau đó hoặc nếu xảy ra ngoại lệ.

Nhưng nếu quá trình bị chấm dứt mà không có ngoại lệ, ví dụ như bị giết, bị khóa hoặc thậm chí gặp phải lỗi nghiêm trọng không thể phục hồi, trạng thái vẫn bị "treo" và không có cách nào để tiếp tục.

Giải pháp: đảm bảo, thực sự không có reindex đầy đủ đang chạy, sau đó cập nhật trạng thái qua SQL.

Bạn sẽ tìm thấy tất cả các trạng thái với:

select * from mview_state;

và cập nhật nó như thế này:

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

Bạn đã quản lý để tìm một giải pháp bằng chứng đầy đủ?
Vivek Kumar

2

Bạn không cần chỉnh sửa cơ sở dữ liệu để làm như vậy, bạn có thể làm tương tự bằng cách đặt lại và lập chỉ mục và sau đó giới thiệu lại chúng bằng cách sử dụng các lệnh sau;

php bin/magento indexer:reset

php bin/magento indexer:reindex

1
Đó là điều đầu tiên tôi đã thử, nhưng nó chỉ đặt lại trạng thái (tức là "đang diễn ra"), chứ không phải trạng thái mview
Fabian Schmengler

Tôi không chắc chắn nếu kích hoạt một reindex đầy đủ một lần nữa sẽ hoạt động, nhưng ngay cả khi như vậy, tôi muốn tránh nó
Fabian Schmengler

Tôi đã có cùng một vấn đề trong trường hợp của tôi khi quá trình bị đình chỉ, ở trên đã làm việc cho tôi sau đó. Đó là magento 2.1.x mặc dù.
Vivek Kumar

Cảm ơn, tôi sẽ thử nghiệm một chút để tìm hiểu thêm :)
Fabian Schmengler

1
Tôi thấy rằng thiết lập lại, php bin / magento indexer: reset, không thay đổi cờ treo, nhưng đã làm cho nó để tôi có thể reindex đúng cách và đến lượt nó đã thay đổi cờ trở lại không hoạt động. tôi đề nghị sử dụng: php bin / magento indexer: reset được đề xuất ở trên.
jrossi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.