nixp.ru v3.0

24 октября 2017,
вторник,
07:04:19 MSK

DevOps с компанией «Флант»
sunjob написал 8 октября 2013 года в 21:19 (1975 просмотров) Ведет себя неопределенно; открыл 8 тем в форуме, оставил 44 комментария на сайте.

добрый день

давно использую сабж (recoll-морда и recollindex) и наблюдаю неадекватное поведение реалтайм мониторинга

собирал с обоими поддержками (fam & inotify), у обоих примерное поведение неадекватности, только у fam-a их больше: о)

смысл неадекватности: пока база данных маленькая то мониторинг вроде как более менее работает, в течении 5-10 секунд именениея в содержании файла видны, как только база вырастает более 2гигов, то реалтайм мониторинг «уходит в глухую оборону», не видит изменений или вообще сваливается

вопрос 1: есть кто самолично (и лучше самосборно и с большой базой данных) запустил реалтайм на своей машине?

далее…: о) при запуске recollindex происходит «просмотр или переиндексация изменеий», которая занимает достаточное время/процессор (особенно при больших базах данных) 

— при нормально работающем «реалтайме» этого, сообстбвенно, и не надо делать то

— но! после этой «переиндексации изменений» — видятся прошлые изменения, которые не были замечаны до этого (прошлые это обычно со вчерашнего дня или сеанса)

причем ни какими ключами запуска не мог добиться что бы recollindex запускался без этой самой «переиндексации»

так как «реалтайм» барахлил то я мирился с этими переиндексациями (хрен с ним, потарахтит неск. минут и успокоится)

теперь решил разобраться

вопрос 2: кто ни будь смог запустить реалтайм монитор без этих «задрочествований»

recoll использует xapian в кач-ве базы данных, мониторю эту тему года эдак с… блин, короче давно, собирал все версии recoll & xapian, ненормальность наблюдалась примерно одинаково во всех версиях, в более старых чуть менее

п.с. с автором программы связывался, описывал косяки, ни чего внятного не получил, кроме «предложения повторить несколько раз эти косяки с разными режимами, типа с базой на 3, 5 и более гигобайт итд» апосля отписаться ему…: о)

slackware 12.2, kernel 2.6.29.6, kde(tde) 3.5.12, 32гб, asus gts 250/512, sdd,hdd,cd-dvd-ram etc…

sunjob

с первым вопросом разобрался:

/etc/sysctl.conf

# inotify for recollindex realtime monitoring

#

# cat /proc/sys/fs/inotify/max_queued_events — 16384

# cat /proc/sys/fs/inotify/max_user_instances — 128

# cat /proc/sys/fs/inotify/max_user_watches — 16384

#

# -->

#

fs.inotify.max_queued_events=32768

fs.notify.max_user_instances=256

fs.inotify.max_user_watches=32768

/// 

остался второй вопрос: запуск recollindex — без переиндексации

sunjob

опять написал автору, он ответил что «специально для этого добавил ключ -n… в последней версии»!!! замечательно!!!

использую версию 1.14.4 (древнюю, шуструю и не падучую) — осталось написать патч: о)

sunjob

фсе, тему можно сдавать в архивпатч для старой версии recollindex-1.14.4, который добавляет новый ключ «-n» для подавления «переиндексации», т.е. тихий старт

 

cut <—

— src/index/recollindex.cpp>2010-11-27 23:40:38.000000000 +0700

+++ src/index/recollindex.cpp.2>2013-10-12 20:23:45.000000000 +0800

@@ -23,6 +23,7 @@

.

#include <stdio.h>

#include <signal.h>

+#include <unistd.h>

#include <errno.h>

#include <sys/time.h>

#include <sys/resource.h>

@@ -157,6 +158,7 @@

#define OPT_x 0×800

#define OPT_l 0×1000

#define OPT_b 0×2000

+#define OPT_n 0×4000

.

static const char usage [] =

«\n»

@@ -169,6 +171,7 @@

«recollindex -m [-w <secs>] -x [-D]\n»

» Perform real time indexing. Don’t become a daemon if -D is set.\n»

» -w sets number of seconds to wait before starting.\n»

+» -n skip initial incremental indexing pass.\n»

#ifndef DISABLE_X11MON

» -x disables exit on end of x11 session\n»

#endif /* DISABLE_X11MON */

@@ -232,6 +235,7 @@

> case 'i’: op_flags |= OPT_i; break;

> case 'l’: op_flags |= OPT_l; break;

> case 'm’: op_flags |= OPT_m; break;

+> case 'n’: op_flags |= OPT_n; break;

> case ’s’: op_flags |= OPT_s; break;

#ifdef RCL_USE_ASPELL

> case 'S’: op_flags |= OPT_S; break;

@@ -333,9 +337,11 @@

>if (!(op_flags & OPT_x) && !x11IsAlive())

> exit(0);

.

->confindexer = new ConfIndexer(config, &updater);

->confindexer->index(rezero, ConfIndexer::IxTAll);

->deleteZ(confindexer);

+>if ((op_flags&OPT_n) == 0) {

+> confindexer = new ConfIndexer(config, &updater);

+> confindexer->index(rezero, ConfIndexer::IxTAll);

+> deleteZ(confindexer);

+>}

>int opts = RCLMON_NONE;

>if (op_flags & OPT_D)

> opts |= RCLMON_NOFORK;

cut <--

sunjob

а вот и рано сдавать в архив

применил патч, присланный автором, переустановил и… все равно переиндексация каждый раз, при запуске демона…

написал обратно автору, молчит… давайте вместе думать: о) если кому интересно

rgo

А каким образом ты останавливаешь демонов? Просто слова о том, что recollindex после перезапуска забывает некоторые последние изменения наводят на мысль, что быть может он завершается некорректно и из-за этого не сохраняет полностью индекс? При таком подходе, он как бы и не косячит нисколько при запуске — действует строго согласно инструкции.

sunjob

>> забывает некоторые последние изменения

совсем не правильно «интерпретировали»…: о)

>> завершается некорректно и из-за этого не сохраняет полностью индекс

все корректно завершается

 

на данный момент проблема (вообщем то не проблема а фишка) одна, это при старте — запуск переиндексации, довольно таки тяжелый процесс… но недолгий: о) минут 5вотс… эту самую фишку не могу и отключить (даже с пом-ю патча от автора)

 

действует строго согласно инструкции…: о) это «автор» по умолчанию вставил переиндексацию, посчитав, что «что либо могло произойти и/или монитор был не запущен до этого какое то время… » это из переписки… короче, эта фишка принудительно вставлена, но в последних версиях автор прочувствовался и добавил чоотв. ключ для отключения переиндексации: о)

достанит меня эта тарахтелка -сам залезу в исходники и… повырезаю там все что можно… и нужно: о)

rgo

> достанит меня эта тарахтелка -сам залезу в исходники и… повырезаю там все что можно… и нужно

Это уже давно пора было сделать ;)

Скомпилять с отладочной инфой, запустить под отладчиком и протрейсить от старта до начала индексации, чтобы чётко понять что влияет на это, а что нет. Скорее всего какое-то условие для скипания индексации не выполняется, а что именно можно выяснить лишь таким образом.

> все корректно завершается

Это результат полученный путём запуска под отладчиком? Может когда демон сигнал на завершение обрабатывает, что-нибудь у него там криво поворачивается, и он вместо того, чтобы грамотно завершиться, падает.

sunjob

>> Скомпилять с отладочной инфой, запустить под отладчиком и протрейсить от старта до начала индексации,

спасибо, но я сам не разберусь с этим, времени оч.много надо, что бы разгрести это …

по факту, все так же падает себе как ему взаблагоразумится…