так же могут быть разные race когда indexer послал SIGHUP вы думаете что индекс ротировался, и запускаете запрос для определения количества документов. но запрос использует еще старый индекс, а ротация случится позже
Поэтому все еще не понятно в чем проблема, неправильный метод определения или неправильное время запроса или проблема в ротации индексов.
Было бы лучше если бы вы
- добавили какой-то не нужный документ в источник и подавляли его дельтой
- выполняли запрос
SELECT * FROM idx WHERE id='non_sence'OPTION comment=‘rotation_gen_num’` - который бы показал наличие или подавление этого документа - дальше если демон запущен с опцией
--logdebugто в логе демона будут логированы события с файлами, в том числе и начало и окончание ротации файлов. И эти события можно было бы сравнить в тайстампом из query.log для запроса с меткойrotation_gen_num
Это позволит быть уверенным что не происходит никакого race. Если же там есть race между тем что вы думаете, что индекс ротировался и когда на самом деле завершилась ротация в демоне, то вы можете переключится на ручную ротацию:
- запускать индексацию без ротации Data creation and modification > Adding data from external storages > Plain tables creation | Manticore Search Manual
manticore indexer --rotate --nohup plain_table
- после ротировать файлы индекса командой MySQL Data creation and modification > Adding data from external storages > Rotating a table | Manticore Search Manual
RELOAD TABLE plain_table;
чтобы быть уверенным когда началась и завершилась ротация файлов индекса