Индексация plain индексов и kill-list

так же могут быть разные race когда indexer послал SIGHUP вы думаете что индекс ротировался, и запускаете запрос для определения количества документов. но запрос использует еще старый индекс, а ротация случится позже

Поэтому все еще не понятно в чем проблема, неправильный метод определения или неправильное время запроса или проблема в ротации индексов.

Было бы лучше если бы вы

  • добавили какой-то не нужный документ в источник и подавляли его дельтой
  • выполняли запрос SELECT * FROM idx WHERE id='non_sence' OPTION comment=‘rotation_gen_num’` - который бы показал наличие или подавление этого документа
  • дальше если демон запущен с опцией --logdebug то в логе демона будут логированы события с файлами, в том числе и начало и окончание ротации файлов. И эти события можно было бы сравнить в тайстампом из query.log для запроса с меткой rotation_gen_num

Это позволит быть уверенным что не происходит никакого race. Если же там есть race между тем что вы думаете, что индекс ротировался и когда на самом деле завершилась ротация в демоне, то вы можете переключится на ручную ротацию:

  1. запускать индексацию без ротации Data creation and modification > Adding data from external storages > Plain tables creation | Manticore Search Manual
manticore indexer --rotate --nohup plain_table
  1. после ротировать файлы индекса командой MySQL Data creation and modification > Adding data from external storages > Rotating a table | Manticore Search Manual
RELOAD TABLE plain_table;

чтобы быть уверенным когда началась и завершилась ротация файлов индекса