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

dimat

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

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

divankin

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

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
31
Киров
#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
 

divankin

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

dimat

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

Мыш

Well-Known Member
Lotus team
12.02.2008
1 084
13
#16
А в этом агенте (или в используемых им библиотеках) не используются ли какие-нить ф-ции из API?
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 084
13
#18
Чего-то я не понял. Создаем нового агента с новым именем, содержащего некий произвольный код - он падает? Изменяем произвольный код на требуемый - падает?

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

puks

Well-Known Member
Lotus team
03.02.2007
1 971
16
#19
nsd file должен создаваться в data\IBM_TECHNICAL_SUPPORT .