Проблема с украинским лемматайзером

Добродень/утро/ночь и т.д.
Собсно сабж: установлен по мануалу без проблем.
Индекс создаётся при помощи, установленного через composer.

Параметры индекса:

[
    'id' => ['type' => 'int'],
    'in_office' => ['type' => 'int'],
    'supp_upd' => ['type' => 'int'],
    'status_id' => ['type' => 'int'],
    'category_id' => ['type' => 'int'],
    'price' => ['type' => 'float'],
    'yesprice' => ['type' => 'bool'],
    'enabled' => ['type' => 'bool'],
    'date_add' => ['type' => 'timestamp'],
    'date_mod' => ['type' => 'timestamp'],
    'name' => ['type' => 'string','options' => ['indexed', 'stored']],
    'articul' => ['type' => 'string','options' => ['indexed', 'stored']]
], [
    'morphology'=>'lemmatize_uk_all, lemmatize_en_all, soundex, metaphone',
    'charset_table'=>'non_cjk,U+0406->U+0456,U+0456,U+0407->U+0457,U+0457,U+0490->U+0491,U+0491',
    'expand_keywords' => '1',
    'index_exact_words' => '1',
    'rt_mem_limit' => '512M',
    'min_word_len' => '2',
    'min_infix_len' => '3',
    'dict' => 'keywords',
    'blend_chars' => '+, -, &, U+23, /',
    'wordforms' => '/path/to/wordforms.txt'
]

При попытке создать индекс зависает на пару секунд и
Fatal error: Uncaught Manticoresearch\Exceptions\NoMoreNodesException: No more retries left in /var/www/user/data/www/site/classes/manticoresearch/vendor/manticoresoftware/manticoresearch-php/src/Manticoresearch/Connection/ConnectionPool.php:62
Но только убираешь lemmatize_uk_all - всё быстро создаётся без проблем!
lemmatize_uk_all или lemmatize_uk - не важно, результат один - эксепшн.

Как проверить корректность установки uk-лемматайзера?
Куда копать?

Спасибо.

нужно посмотреть / выложить searchd.log - возможно там залогирован креш, который позволит понять из за чего началась проблема

Скажем так - понятнее не стало! ))

------- FATAL: CRASH DUMP -------
[Sat Aug 13 11:22:10.932 2022] [3113421]

--- crashed SphinxQL request dump ---
CREATE TABLE products_ua(id int,in_office int,supp_upd int,status_id int,category_id 
int,price float,yesprice bool,enabled bool,date_add timestamp,date_mod timestamp,name 
string indexed stored,articul string indexed stored) morphology = 'lemmatize_uk_all,
 lemmatize_ru_all, lemmatize_en_all, soundex, metaphone' charset_table = 'non_cjk,
U+0406->U+0456,U+0456,U+0407->U+0457,U+0457,U+0490->U+0491,U+0491' expand_keywords 
= '1' index_exact_words = '1' rt_mem_limit = '512M' min_word_len = '2' min_infix_len 
= '3' dict = 'keywords' blend_chars = '+, -, &, U+23, /' wordforms = '/path/to/wordforms.txt'
--- request dump end ---
--- local index:SYSTEM FLUS
Manticore 5.0.2 348514c86@220530 dev
Handling signal 6
-------------- backtrace begins here ---------------
Program compiled with Clang 11.0.0
Configured with flags: Configured with these definitions: -DDISTR_BUILD=rhel8 -DUSE_SYSLOG=1 -DWITH_GALERA=1 -DWITH_RE2=1 -DWITH_RE2_FORCE_STATIC=1 -DWITH_STEMMER=1 -DWITH_STEMMER_FORCE_STATIC=1 -DWITH_ICU=1 -DWITH_ICU_FORCE_STATIC=1 -DWITH_SSL=1 -DWITH_ZLIB=1 -DWITH_ODBC=1 -DDL_ODBC=1 -DODBC_LIB=libodbc.so.2 -DWITH_EXPAT=1 -DDL_EXPAT=1 -DEXPAT_LIB=libexpat.so.1 -DWITH_ICONV=1 -DWITH_MYSQL=1 -DDL_MYSQL=1 -DMYSQL_LIB=libmariadb.so.3 -DWITH_POSTGRESQL=1 -DDL_POSTGRESQL=1 -DPOSTGRESQL_LIB=libpq.so.5 -DLOCALDATADIR=/var/lib/manticore/data -DFULL_SHARE_DIR=/usr/share/manticore
Host OS is Linux x86_64
Stack bottom = 0x7f09d5e68410, thread stack size = 0x40000
Trying manual backtrace:
Frame pointer is null, manual backtrace failed (did you build with -fomit-frame-pointer?)
Trying system backtrace:
begin of system symbols:
/usr/bin/searchd[0x59f5ce]
/usr/bin/searchd[0x47e49f]
/lib64/libpthread.so.0(+0x12c20)[0x7f09dbf13c20]
/lib64/libc.so.6(gsignal+0x10f)[0x7f09dbb7337f]
/lib64/libc.so.6(abort+0x127)[0x7f09dbb5ddb5]
/usr/local/lib64/python3.9/site-packages/dawg.cpython-39-x86_64-linux-gnu.so(+0x46e68)[0x7f09d9743e68]
/usr/local/lib64/python3.9/site-packages/dawg.cpython-39-x86_64-linux-gnu.so(+0x3b7df)[0x7f09d97387df]
/usr/local/lib64/python3.9/site-packages/dawg.cpython-39-x86_64-linux-gnu.so(+0x2915e)[0x7f09d972615e]
/lib64/libpython3.9.so.1.0(+0x1862b5)[0x7f09daba82b5]
/lib64/libpython3.9.so.1.0(_PyEval_EvalFrameDefault+0x7cc)[0x7f09dac1f77c]
/lib64/libpython3.9.so.1.0(+0x1eb3ee)[0x7f09dac0d3ee]
/lib64/libpython3.9.so.1.0(_PyFunction_Vectorcall+0x46b)[0x7f09dac0e9cb]
/lib64/libpython3.9.so.1.0(_PyEval_EvalFrameDefault+0x5fd)[0x7f09dac1f5ad]
/lib64/libpython3.9.so.1.0(_PyFunction_Vectorcall+0x1a9)[0x7f09dac0e709]
/lib64/libpython3.9.so.1.0(+0x206d6d)[0x7f09dac28d6d]
/lib64/libpython3.9.so.1.0(_PyObject_MakeTpCall+0x266)[0x7f09dab5d0b6]
/lib64/libpython3.9.so.1.0(_PyEval_EvalFrameDefault+0x5aea)[0x7f09dac24a9a]
/lib64/libpython3.9.so.1.0(+0x1eb3ee)[0x7f09dac0d3ee]
/lib64/libpython3.9.so.1.0(_PyFunction_Vectorcall+0x46b)[0x7f09dac0e9cb]
/lib64/libpython3.9.so.1.0(+0x20698b)[0x7f09dac2898b]
/lib64/libpython3.9.so.1.0(+0x18e991)[0x7f09dabb0991]
/lib64/libpython3.9.so.1.0(PyObject_Call+0x242)[0x7f09dabb7232]
/usr/local/lib/manticore/lemmatize_uk.so(plugin_load+0xe1)[0x7f09dafef401]
/usr/bin/searchd[0x8a9850]
/usr/bin/searchd[0x8a8df9]
/usr/bin/searchd[0x8a6788]
/usr/bin/searchd[0xdad31c]
/usr/bin/searchd[0xdcaa5f]
Trying boost backtrace:
 0# 0x000000000059F623 in /usr/bin/searchd
 1# 0x000000000047E49F in /usr/bin/searchd
 2# 0x00007F09DBF13C20 in /lib64/libpthread.so.0
 3# gsignal in /lib64/libc.so.6
 4# abort in /lib64/libc.so.6
 5# 0x00007F09D9743E68 in /usr/local/lib64/python3.9/site-packages/dawg.cpython-39-x86_64-linux-gnu.so
 6# 0x00007F09D97387DF in /usr/local/lib64/python3.9/site-packages/dawg.cpython-39-x86_64-linux-gnu.so
 7# 0x00007F09D972615E in /usr/local/lib64/python3.9/site-packages/dawg.cpython-39-x86_64-linux-gnu.so
 8# 0x00007F09DABA82B5 in /lib64/libpython3.9.so.1.0
 9# _PyEval_EvalFrameDefault in /lib64/libpython3.9.so.1.0
10# 0x00007F09DAC0D3EE in /lib64/libpython3.9.so.1.0
11# _PyFunction_Vectorcall in /lib64/libpython3.9.so.1.0
12# _PyEval_EvalFrameDefault in /lib64/libpython3.9.so.1.0
13# _PyFunction_Vectorcall in /lib64/libpython3.9.so.1.0
14# 0x00007F09DAC28D6D in /lib64/libpython3.9.so.1.0
15# _PyObject_MakeTpCall in /lib64/libpython3.9.so.1.0
16# _PyEval_EvalFrameDefault in /lib64/libpython3.9.so.1.0
17# 0x00007F09DAC0D3EE in /lib64/libpython3.9.so.1.0
18# _PyFunction_Vectorcall in /lib64/libpython3.9.so.1.0
19# 0x00007F09DAC2898B in /lib64/libpython3.9.so.1.0
20# 0x00007F09DABB0991 in /lib64/libpython3.9.so.1.0
21# PyObject_Call in /lib64/libpython3.9.so.1.0
22# plugin_load in /usr/local/lib/manticore/lemmatize_uk.so
23# 0x00000000008A9850 in /usr/bin/searchd
24# 0x00000000008A8DF9 in /usr/bin/searchd
25# 0x00000000008A6788 in /usr/bin/searchd
26# 0x0000000000DAD31C in /usr/bin/searchd
27# 0x0000000000DCAA5F in /usr/bin/searchd

-------------- backtrace ends here ---------------
Please, create a bug report in our bug tracker (https://github.com/manticoresoftware/manticore/issues)
and attach there:
a) searchd log, b) searchd binary, c) searchd symbols.
Look into the chapter 'Reporting bugs' in the manual
(https://manual.manticoresearch.com/Reporting_bugs)
Dump with GDB via watchdog
--- active threads ---
thd 0 (work_0), proto http, state query, command create_table
--- Totally 2 threads, and 1 client-working threads ---
------- CRASH DUMP END -------
[Sat Aug 13 11:22:14.183 2022] [3108836] watchdog: main process 3113421 crashed via CRASH_EXIT (exit code 2), will be restarted
[Sat Aug 13 11:22:14.184 2022] [3108836] watchdog: main process 3133753 forked ok
[Sat Aug 13 11:22:14.185 2022] [3133753] starting daemon version '5.0.2 348514c86@220530 dev (columnar 1.15.4 2fef34e@220522) (secondary 1.15.4 2fef34e@220522)' ...
[Sat Aug 13 11:22:14.185 2022] [3133753] listening on 127.0.0.1:9312 for sphinx and http(s)
[Sat Aug 13 11:22:14.185 2022] [3133753] listening on 127.0.0.1:9306 for mysql
[Sat Aug 13 11:22:14.185 2022] [3133753] listening on 127.0.0.1:9308 for sphinx and http(s)
[Sat Aug 13 11:22:14.193 2022] [3133755] binlog: replaying log /var/lib/manticore/binlog/binlog.001
[Sat Aug 13 11:22:14.193 2022] [3133755] binlog: replay stats: 0 commits; 0 updates, 0 reconfigure; 0 pq-add; 0 pq-delete; 0 pq-add-delete, 0 indexes
[Sat Aug 13 11:22:14.193 2022] [3133755] binlog: finished replaying /var/lib/manticore/binlog/binlog.001; 0.0 MB in 0.000 sec
[Sat Aug 13 11:22:14.193 2022] [3133755] binlog: finished replaying total 1 in 0.000 sec
[Sat Aug 13 11:22:14.193 2022] [3133753] accepting connections
[Sat Aug 13 11:22:14.193 2022] [3133755] prereading 0 indexes
[Sat Aug 13 11:22:14.193 2022] [3133755] prereaded 0 indexes in 0.000 sec

Ядро:

Linux superserver 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Tue Dec 21 13:57:48 EST 2021 x86_64 x86_64 x86_64 GNU/Linux

ОСь:

AlmaLinux release 8.5 (Arctic Sphynx)

Единственно, за что можно “зацепиться”:

Frame pointer is null, manual backtrace failed (did you build with -fomit-frame-pointer?)

Но инфы по этой инфе, в контексте сабжа, откровенно говоря - немного.
Да и относится это уже к скомпиленому коду.

Пилить репорт на багтрекере?

=== UPD ===

После такого краша падают все индексы: предварительно созданный products_ru уходит в небытие. При попытке получить status или describe:

PHP Fatal error:  Uncaught Manticoresearch\Exceptions\ResponseException: "SHOW INDEX STATUS requires an existing index" in /var/www/user/data/www/site/classes/manticoresearch/vendor/manticoresoftware/manticoresearch-php/src/Manticoresearch/Transport/Http.php:126

В query.log, при поиске, так же:

/*error=unknown local index(es) 'products_ru' in search request */

Инфа по индексу присутствует:
image

Как и по незавершённому ua:
image

да нужен тикет в GitHub - тк это креш при создании индекса, судя по всему уходит в либу питона, которая занимается обработкой lemmatize_uk

Так же 2ой баг - что ранее созданные индексы не сохранились в конфиге и после креша и рестарта демона - они не загружаются из конфига.

Ок.

Нужно ли как-то решать эту проблему, если она - следствие изначальной? И теоретически-гипотетически, если устранить 1ю - 2я просто не возникнет!

ну если креш устранить - то индексы пропадать перестанут конечно
но лучше было бы исследовать кейс почему пропадают индексы, тк вроде стоит сохранение конфига и такого пропадания быть не должно

1 Like

Done

В общем…
Переустановил питон и проблема исчезла, вопрос решён.
Тему можно закрывать (на GH закрыл).