Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: ata am 29.06.10 - 10:25:40
-
Hallo @all
folgendes Problem nervt - ich intialisiere über LS die Inbox...
Dim session As New NotesSession
Dim db As NotesDatabase
Dim vwInbox As NotesView
Set db = session.CurrentDatabase
Set vwInbox = db.getView( "($Inbox)" )
Set doc = vwInbox.getFirstDocument ' und hier hängt er bereits
...
...um darin enthaltene Dokumente zu analysieren. das funktioniert über sehr viele Datenbanken sehr gut - und dann - von jetzt auf nachher kann er einen Ordner in einer DB nicht mehr initialisieren, sondern hängt sich auf. Es erscheint keine Fehlermeldung - der Code hängt sich einfach auf. Kennt jemand das Problem?
Fixup und compact bringen übrigens keine Besserung - ich denke der Ordner hat einen "Hau" ab - lässt sich aber nicht fixen. Hat jemand auch das Problem?
Toni
-
nun wenn du ein Problem mit dem Index vermutest, solltest du Updall mit der Option zum neuerstellen sämtlicher indizes probieren.
-
... der fixup / updall löst das Problem insofern nicht, als das ich den Fehler abfangen muß. Ich habe mich in meiner Beschreibung falsch ausgedrückt. Der fixup repariert den Ordner - nur sollte ich zur Laufzeit des Agenten erkennen, ob er sich an einem beschädigten Ordner aufhängt. Ich kann nicht auf Verdacht hin für jede DB einen fixup starten und dann der eigentlichen Aufgabe nachkommen, die Ordner zu analysieren - das sprengt den Rahmen...
Bei der Initialisierung des ersten Dokumentes aus dem Ordner hängt er sich auf - wie kann ich das "Aufhängen" erkennen - oder wie komme ich an die Dokumente des beschädigten Ordners heran...
Toni :-:
-
Da weiß ich keine Lösung dazu, aber ich denke wenn man schon weiß, dass man defekte Datenbanken hat, sollte man auf jeden Fall diesen zugrunde liegenden Fehler fixen. Auch Code in der Mailschablone verwendet ähnliche Codesegmente wie du sie geschrieben hast und die würden dann auch zu hangs führen.
Grüße
Ralf
-
vielleicht als Ansatz - ich würde es in diesem Fall so versuchen.
Einen zusätzlichen Hilfsagenten erstellen, der in einem zentralen Dokument schreibt oder ein eigenes Dokument anlegt und sich dann nur das erste Dokument aus der View holt.
Bei Erfolg wird das zuvor angelegt Dokument gelöscht oder ein entsprechendes Flag gesetzt.
Der eigentliche Agent startet später und prüft zuvor, ob es ein Dokument gibt oder ein entsprechendes Flag gesetzt ist. Im Fehlerfall meldet er die Datenbank und beendet sich. Im Gutfall erledigt er seine Arbeit.
Oder der Hilfsagent startet den eigentlichen Agenten im Erfolgsfall direkt.
So hast Du zumindest eine Art Übersicht, welche Datenbanken defekt sind und wenn sie einmal repariert sind, ob sie wieder Streß machen ....
Oder kann der eigentliche Agent selbsttätig die Reparatur anstoßen?
Viel Erfolg
Markus
-
... erst mal danke für eure Hilfe... ::)
@Ralf,
ich denke auch, daß dies begangen werden könnte. Primär wird aber an zentraler Stelle über viele Datenbanken hinweg nach zu archivierenden Dokumenten gesucht, die sich in der Inbox der jeweiligen Datenbank befinden, ein gewisses Datum überschritten haben etc.. Im UI des Users ist nichts ungewöhliches - es scheint ja für den Normalfall alles tolerant zu laufen.
@Markus,
danke für deine Anregung die Datenbank in einer Weise zuvor zu flaggen, ob die Inbox beschädigt sein könnte - mal schauen, damit könnte man dann an zentraler stelle zuvor nach solch "geflaggten" Datenbanken Ausschau halten und einen fixup anstossen. Wenn dann der eigentliche Lauf kommt, werden nur noch DB's genommen, deren Inbox sauber war...
Ich werde den Ansatz mal ausprobieren ...
Toni ;-)