Падает Сервер При Выполнении Агента На Сервере

dimat

Lotus team
31.07.2008
516
0
#1
Всем привет!
Если в процессе выполнения агента случается какая то ошибка(опытным путем выяснено: падает при любой ошибке. Например если NotesDocument=Nothing и к нему идет обращение или при ошибке Type mismatch) сервер сразу же падает.
Ситуация имеет место быть на сервере 8.5.1 и на сервере 8.5.3 + все фикс паки и хот фиксы.
Грешит этим только один агент в одной бд. Все остальные ведут себя как положено - выполняют действия согласно обработчику ошибок, если таковые имеются.

Как исправить проблему?
 

divankin

Senjor developer
13.08.2009
182
0
#4
Скорей всего проблема в коде обработчика ошибки. Так что все равно нужен код.
Ну или отключите любую обработку ошибок, закоментите все On Error и посмотрите будет ли падать.
 

dimat

Lotus team
31.07.2008
516
0
#5
Например был агент вида:

Код:
dim view as notesview
dim doc as notesdocument
set view=db.getview("Viewname") 'db заведомо не nothing
set doc=view.getdocumentbykey(key,true) 'doc заведомо будет nothing (проверено)
print doc.getitemvalue("itemname")(0) 'На этой строке падает сервер (проверено)
при следущем варианте сервер не падает
Код:
dim view as notesview
dim doc as notesdocument
set view=db.getview("Viewname") 'db заведомо не nothing
set doc=view.getdocumentbykey(key,true) 'doc заведомо будет nothing (проверено)
if not doc is nothing then
print doc.getitemvalue("itemname")(0)
end if
в этом коде агент должен завершиться и написать в коносль текст ошибки и строку, однако сервер опять лежит

Код:
dim view as notesview
on error goto errh
dim doc as notesdocument
set view=db.getview("Viewname") 'db заведомо не nothing
set doc=view.getdocumentbykey(key,true) 'doc заведомо будет nothing (проверено)
print doc.getitemvalue("itemname")(0) 'На этой строке падает сервер (проверено)

exitsub:
exit sub

errh:
Print "Error: " & error & " line: " & erl
resume exitsub
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#6
раз пошла такая пьянка, то создай нового агента и перенеси в него код, а старый удали..
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#8
nsd.exe на своём месте, не переносили/переименовывали?
 

divankin

Senjor developer
13.08.2009
182
0
#12
Проблема для любых серверных агентов в этой БД?
Если вообще убрать весь код и добавить что-нибудь совсем безобидное типа деления на ноль, то проблема остается?
Или для проблемы нужно и GetView, и GetDocumentByKey?
Откуда берется объект db, это просто CurrentDatabase или что? Он получает значение в этой же процедуре?
 

dimat

Lotus team
31.07.2008
516
0
#13
Проблема для любых серверных агентов в этой БД?
Только для этого агента
Если вообще убрать весь код и добавить что-нибудь совсем безобидное типа деления на ноль, то проблема остается?
Или для проблемы нужно и GetView, и GetDocumentByKey?
Остается, выше написал, что такая хрень происходит при любых ошибках
Откуда берется объект db, это просто CurrentDatabase или что? Он получает значение в этой же процедуре?
db - это текущая бд
 

Мыш

Премиум
12.02.2008
1 092
10
#16
А в этом агенте (или в используемых им библиотеках) не используются ли какие-нить ф-ции из API?
 

Мыш

Премиум
12.02.2008
1 092
10
#18
Чего-то я не понял. Создаем нового агента с новым именем, содержащего некий произвольный код - он падает? Изменяем произвольный код на требуемый - падает?

У мну такое ощущение, что база, в которой создается агент, битая... А если в другую базу его перенести (с соответствующим изменением кода, ессно)?