Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: wflamme am 01.09.04 - 22:58:23
-
View in einer DB auf dem Server zeigt ein Dokument an. LS greift mit folgendem Primitiv-Code zu:
set vw=db.getview({ViewName})
set doc=vw.getfirstdocument
if doc is nothing then
....
So 2-3x/Monat tritt ein Fall ein, der darauf hindeutet, daß der Code einen leeren Auto-Update-View sieht, obwohl 100%ig mindestens ein Doc auf die Selektionsformel paßt.
Kann es sein, daß der Zugriff vielleicht gerade in dem Moment erfolgt, wo irgendeine Task auf dem Server den View plattmacht und neu aufbaut?
Falls ja, würde dann ein vorgeschaltetes vw.Refresh dazu führen, daß der Code anhält, bis der View aufgebaut ist?
-
Ich glaube ich hatte mal den umgekehrten Fall, nämlich dass mehr Dokumente zurückgegeben werden als tatsächlich in der DB vorhanden :P
Hatte was mit SoftDeletions zu tun soweit ich noch weiss, und man musste überprüfen ob doc.size = 0, um die auszufiltern.
Falls ja, würde dann ein vorgeschaltetes vw.Refresh dazu führen, daß der Code anhält, bis der View aufgebaut ist?
Ohne selbst das Prolem mal gehabt zu haben, hätte ich jetzt auch pauschal mal ein view.refresh eingebaut. Ich habe allerdings keine Ahnung, ob das hier die Lösung ist ::)
-
Danke für die schnelle Rückmeldung.
Ja, ich hätte einen vw.Refresh auch eingebaut. Aber die DB läuft nicht hier, alles was ich habe ist fremder Quellcode und die Beschreibung eines Nebeneffektes, den ich mir nach Blick auf die Sources erstmal nur so erklären kann.... kurios!
-
Ist das Notes-Dokument - Objekt = Nothing, wenn der Fehler auftritt?
Nicht dass bei Dir auch der Fall zutrifft, wie ich das glaub ich mal hatte: Dein view.GetFirstDocument ist ein gelöschtes Dokument, ist auch als Objekt soweit dann vorhanden, aber hat doc.size = 0.
**Edit: ich lese gerade, dass Du leider die DB nicht da hast, und wohl der Fehler nur sporadisch auftitt - wohl auf die schnelle schwierig, das rauszufinden
-
Normalerweise (!) wird ein View Index durch nix platt gemacht, sondern "nur" geupdated. Wie es sich für ein zünftiges Client-Server-System gehört, steht der (bekannte Teil des) Index in dieser Zeit aber auch zur Verfügung.
Mit gelöschten Dokumenten, die in Views noch auftauchen (auch wenn nicht sichtbar, aber beim LS-Semmeln durch die View) hatte ich auch schon ab und an zu tun. Nach meiner Erfahrung (was nix zu sagen hat) reicht das NotesDocument.Size da nicht sicher aus. Ich prüfe auf IsValid UND HasItems. Wenn es da scheppert, ist was faul mit dem "Treffer".
Ein NotesView.Refresh schadet natürlich nie ;D
Bernhard
-
Ich hab nochmal nachgesehen, ich glaub es war "damals" bei mir eine etwas andere Konstellation:
Es wurden mir DeletionStubs über die UnprocessedDocuments Property der NotesDatabase - Klasse zurückgegeben, da half dann ein doc.Size. Wobei ein IsValid und HasItems von Bernhard als zusätzlicher Check sehr sinnvoll klingt ;-)
-
Matthias, gegen die Deletion stubs sollte man auf jeden Fall mehr "Kanonen" aufbieten als weniger. Dein NotesDocument.Site habe ich mir gerade dick und rot vermerkt ;)
Danke,
Bernhard