Domino 9 und frühere Versionen > ND6: Entwicklung
Periodischer Agent (LotusScript) wird nicht beendet
Skorpi:
Hallo LoNo-Gemeinde,
wie die Überschrift schon sagt, habe ich ein Problem mit einem periodischen LotusScript Agenten. Der Agent läuft täglich und hat alle Dokumente der Datenbank als Ziel. Hier der Code:
--- Code: ---
'(Options)
Option Declare
Use "VCAuswertungsLib"
--- Ende Code ---
--- Code: ---
'(Declarations)
Private session As NotesSession
Private agent As NotesAgent
Private db As NotesDatabase
Private dtStart As NotesDateTime
Private dtEnde As NotesDateTime
--- Ende Code ---
--- Code: ---
'(Initialize)
Sub Initialize
On Error Goto Fehlerbehandlung
Set session = New NotesSession
Set agent = session.CurrentAgent
Call logIt(LOG_ACTION, "(Agent: " + agent.Name + " ) Der Agent wurde gestartet.")
Set db = session.CurrentDatabase
Set dtStart = New NotesDateTime("01.01." + Cstr(Year(Now)))
Set dtEnde = New NotesDateTime(Today)
'Set dtEnde = New NotesDateTime("26.02.2008")
Call GeschaeftsAuswertung(dtStart, dtEnde, "geschaeftsjahresauswertung")
'Call VeraenderungsbasierteGSA(dtStart, dtEnde, "geschaeftsjahresauswertung")
Call logIt(LOG_ACTION, "(Agent: " + agent.Name + " ) Der Agent wurde erfolgreich ausgeführt.") '
<-- Diese Nachricht ist im Protokoll ersichtlich, aber beendet wird der Agent nicht
End
Exit Sub
Fehlerbehandlung:
Call ErrorHandling("Agent: " + agent.Name + "'")
Exit Sub
End Sub
--- Ende Code ---
--- Code: ---
'(Terminate)
Sub Terminate
If Not session Is Nothing Then
Delete session
End If
If Not agent Is Nothing Then
Delete agent
End If
If Not db Is Nothing Then
Delete db
End If
If Not dtEnde Is Nothing Then
Delete dtEnde
End If
If Not dtStart Is Nothing Then
Delete dtStart
End If
End Sub
--- Ende Code ---
Der Agent funktioniert sonst einwandfrei. Das letzte was ich im Protokoll sehe, ist das er erfolgreich ausgeführt wurde (siehe Initialize des Agenten). Trotzdem kann ich im Domino Adminstrator unter Server - Status - Tasks sehen, dass der Agent noch läuft... und zwar mit 99% CPU Auslastung.
Hat jemand vielleicht eine Idee woran das liegen könnte?
koehlerbv:
Das Geraffel im Terminate ist vollkommen überflüssig und könnte m.E. sogar zu einer endlosen Geschichte werden, wenn Du dem Agent das ParentObject (session) weghauen möchtest oder den Agent selber (das führt ja zum Terminate).
HTH,
Bernhard
Skorpi:
Vielen Dank für die schnelle Antwort. Ich werde es gleich mal ausprobieren. Hatte das 'Geraffel' hinzugefügt, da ich anfänglich noch Speicherprobleme hatte und dachte ich könnte es damit irgendiwe beheben (Verzweiflungstat). Allerdings konnte ich das Speicherproblem bereits lösen. Habe nur vergessen den Quatsch wieder raus zu nehmen. Ich will gar nicht wissen wieviel Code-Leichen auf diese Art und Weise entstehen.
koehlerbv:
Um solche "Leichen" zu minmieren, mache ich bestimmte Änderungen, deren Sinnhaftigkeit noch nicht feststeht, generell in Kopien der eigentlichen Entwicklungs-DB und teste. Wenn sich das dann bewährt, wird dieser Code-Teil überkopiert und die Test-DB sofort in den Orkus gekippt (nicht, damit man später etwas ausprobiert, was aber zum aktuellen Code gar nicht mehr passt).
HTH,
Bernhard
Skorpi:
Vielen Dank! Es lag tatsächlich an der "Leiche"!
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln