Почему может не работать UpdateProcessedDoc?

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Коллеги, вопрос наверное глупый, но давно хотелось понять, почему может быть такая ерунда?

Всё вроде как в хелпе:
- у агента выставлено "All new & modified documents";
- документы отбираются с помощью UnprocessedDocuments или UnprocessedSearch;
- обрабатываемому документу (неважно, сохраняется он в агенте или нет) в конце делается UpdateProcessedDoc.

и в некоторых агентах (хоть по расписанию, хоть нет) это почему-то не работает - при следующем запуске возвращается то же самое количество документов.
Приходится в UnprocessedSearch с помощью 2-го параметра notesDateTime хоть как-то ограничивать отбор... Но хотелось бы понять, как его завести.

P.S. Domino 9.0.1 FP8.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
517
может доки кто-то редактирует между запусками?
Реплика и/или кластер?
В целом странное поведение, у нас используется такое, правда там для отбора применяется формула внутри агента, третья закладка, там формулой отбор задан и FT индекс нужен, да и мы только читаем. без изменений документа.

Вот тут указано, что парень меняет документы, но при этом сначала он метит их как обработанные, а потом уже сохраняет.
 

Мыш

Lotus Team
12.02.2008
1 224
29
BIT
103
А агент точно отрабатывает до конца? Может, с ошибкой выпадает или по тайм-ауту рубится?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
может доки кто-то редактирует между запусками?
Реплика и/или кластер?
Доки, да, могут изредка редактировать. Но нам ведь и нужно обрабатывать только модифицированные либо необработанные с последнего запуска.
И кластера и реплики внутри кластеров. В агенте запуск стоит для 'Any server', а внутри кодом проверяется сервер из настройки, в итоге отработка идёт всегда на одном.

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

Вот тут указано, что парень меняет документы, но при этом сначала он метит их как обработанные, а потом уже сохраняет.
Интересный фокус :)
Но для нас, к сожалению, так не пойдёт, т.к.:
- во-1, - нельзя отсечь все доки формулой... - оно и так делается, но в коде дополнительно производятся вычисления на предмет 'изменяем или нет'. И все проверенные должны помечаться как обработанные, чтобы не попасть в следующий запуск агента;
- во-2, - в случае необходимости сохранения нельзя помечать документ обработанным до сохранения, т.к. документ может по каким-то причинам не сохраниться, и тогда следующий запуск агента его уже не подхватит.
 

Мыш

Lotus Team
12.02.2008
1 224
29
BIT
103

@VladSh, я плюнул, создаю доп. поле с пометкой, что документ уже обработан. В конце концов, сам Домино тоже пишет служебные поля... :)

 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
@Мыш
Дык и я задаю вопрос, - это что-то я туплю, или оно штатно работает через пень-колоду :)
Я точно помню, что на 6-ке это реально работало. А тут сначала обратил внимание в логе на одинаковое число количества доков, да и один агент иногда заваливается с ошибкой на консоли:
Agent Manager: Execution time limit exceeded by Agent 'agentName' in database 'db.nsf'. Agent signer '...'.

Не люблю лишний раз доки пересохранять, нагружая индексер. Пока выбрал ограничение набора параметром notesDateTime - передаю туда все доки за последнюю неделю (в моём случае их там в пределах нескольких десятков), уже обработанные каждый раз пропускаю и всё. Это ж не десятки тысяч каждый раз обрабатывать. Ну а для отчёта работы агента использую счётчик, который подсчитывает количество реальных сохранений документов.
 

Мыш

Lotus Team
12.02.2008
1 224
29
BIT
103

@VladSh, похоже, штатно через п-к. Я использую Unprocessed только если задача "не боится" повторной обработки документа.​

 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
@Мыш
А как? Я даже если не сохраняю доки, то UpdateProcessedDoc их не помечает обработанными. И в следующий запуск имеем то же количество доков...
 

Мыш

Lotus Team
12.02.2008
1 224
29
BIT
103
Ну да, придется сохранять док-т в любом случае (чтобы саму пометку сохранить).
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Ясно. Т.е. про UpdateProcessedDoc можно потихоньку забывать... ))
 

Мыш

Lotus Team
12.02.2008
1 224
29
BIT
103
У меня олично работают Unpocessed вот в такой базе (это карантин для спама, я агентом там доп. обработку делаю кое-какую). Посмотрите, мож, пригодится.

1658239049687.png
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
У меня всё ещё проще - в базе нет ни вложений, ни LZ1 ненужно. Только 1-я галка по непрочитанным не стоит (может, кстати, тоже стоит поставить, т.к. там всё равно, прочитаны они или нет).

Само UnprocessedDocuments-то работает. Но оно нужно в связке с UpdateProcessedDoc, которая не работает. Потому от UnprocessedDocuments - пшик, - приходится ограничивать выбор искусственно.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
У меня всё ещё проще - в базе нет ни вложений, ни LZ1 ненужно. Только 1-я галка по непрочитанным не стоит (может, кстати, тоже стоит поставить, т.к. там всё равно, прочитаны они или нет).

Само UnprocessedDocuments-то работает. Но оно нужно в связке с UpdateProcessedDoc, которая не работает. Потому от UnprocessedDocuments - пшик, - приходится ограничивать выбор искусственно.
ну мб просто в док писать юниды?...
я как-то напарывался на Unprocessed но контекст не помню, помню - плюнул и решил нигде не использовать ;)
 
  • Нравится
Реакции: VladSh и Мыш
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!