CheckIndex, czyli na ratunek indeksowi

Korzystając z Lucene i Solr jesteśmy przyzwyczajeni do bardzo dużej niezawodności wymienionych rozwiązań. Może jednak nadejść ten dzień, kiedy Solr krzyknie do nas, iż nasz indeks przestał być poprawny i musimy coś z tym zrobić. Czy jedynym wyjściem jest odtwarzanie z kopii zapasowej, bądź ponowna pełna indeksacja ? Nie tylko – jest jeszcze nadzieja w postaci narzędzia CheckIndex.

Co to ?

CheckIndex jest narzędziem dostępnym w bibliotece Lucene, które pozwala sprawdzić i stworzyć nowe pliki segmentów, które nie zawierają problematycznych wpisów. Oznacza to, że narzędzie to, przy niewielkich stratach własnych jest w stanie naprawić zepsuty indeks, a tym samym uchronić nas przed koniecznością odtwarzania kopii zapasowej (oczywiście o ile ją mamy) lub też indeksowania pełnego wszystkich dokumentów, które przechowywaliśmy w Solr.

Od czego zacząć ?

Należy pamiętać, iż zgodnie tym co znajdujemy w Javadoc’ach, narzędzie to jest dalej eksperymentalne i może się zmienić. Dlatego, przed uruchomieniem powinniśmy stworzyć kopię indeksu. Dodatkowo, warto wiedzieć, iż narzędzie analizuje indeks bajt po bajcie, a tym samym w przypadku dużych indeksów czas analizy i naprawy może być duży. Ważne jest, aby nie uruchamiać narzędzia z opcją -fix w chwili kiedy korzysta z niego Solr lub inna aplikacja oparta o bibliotekę Lucene. Na koniec, należy zdawać sobie sprawę, iż uruchomienie narzędzia w trybie naprawiającym indeks może spowodować usunięcie z tegoż dokumentów, które zapisane są w problematycznych obszarach indeksu.

Jak uruchamiać ?

W celu uruchomienia narzędzia przechodzimy do katalogu, gdzie znajdują się pliki biblioteki Lucene i uruchamiamy następujące polecenie:

W moim wypadku wyglądało to następująco:

Po pewnym czasie dostałem następujące informacje:

Co oznacza, że indeks był poprawny i nie było konieczności przeprowadzania żadnych czynności naprawczych. Dodatkowo, można się dowiedzieć kilku ciekawych rzeczy na temat indeksu 😉

Zepsuty indeks

A co dzieje się w przypadku zepsutego indeksu ? Jest tylko jeden sposób – sprawdźmy. W tym celu uszkodziłem jeden z plików indeksu i uruchomiłem narzędzie CheckIndex. Poniżej cytuje, co zobaczyłem na konsoli:

Jak widać, wszystkie 19 dokumentów, które znajdowały się w indeksie zostały usunięte. Jest to ekstremalny przypadek, ale warto sobie zdawać sprawę, że to narzędzie może tak zadziałać.

Na koniec

Pamiętając o podstawowych założeniach związanych z używaniem narzędzia CheckIndex może się okazać, że przyjdzie taki moment, kiedy ułatwi nam ono ponowne uruchomienie Solr w przypadku awarii związanej z indeksem, a tym samym unikniemy rwania włosów z głowy i pytań „Kiedy był zrobiony ostatni backup ?”.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.