db4o Developer Community

db4o open source object database, native to Java and .NET
Welcome to db4o Developer Community Sign in | Join

Predicate liefert falsche Ergebnisse

  •  02-11-2008, 06:16 PM

    Computer [(co)] Predicate liefert falsche Ergebnisse

    Attachment: db4oTest.zip

    Wir nutzen db4o 6.1 im Client / Server Mode. Die Verbindungen werden von einem Connection Pool (Apache Commons) an die einzelnen Clients
    verteilt. Wird eine Änderung an einem Objekt durchgeführt, wird dazu eine Verbindung aus dem Pool geholt und die Änderung mit einem commit
    abgeschlossen. Danach wird die Verbindung wieder an den Pool zurückgegeben, ohne sie zu schließen. Anschließend wollten wir uns das
    Objekt ausgeben lassen, um zu überprüfen, ob der Wert korrekt geändert wurde. Bekommt man vom Pool aber eine andere Verbindung werden in der Regel die alten Werte (vor der Änderung) angezeigt. Dieses Problem haben wir erst mal behoben, indem wir nach dem Laden des Objekts immer ein 'refresh' auf das Objekt gemacht haben.

    Nun haben wir aber festgestellt, dass schon im Predicate beim Holen der Daten aus der Datenbank etwas falsch läuft. Im Predicate wird noch das
    alte (unveränderte) Objekt ausgewertet. Wird auf Server-Seite auch eine Art Caching genutzt?

    Ich wollte daher fragen, ob jemand einen Hinweis zur Ursache dieses Problem geben kann und wie wir es beheben/umgehen können. Im Anhang
    habe ich nochmal ein kleines Programm angehängt, wo dieses Problem nochmal im JUnit-Test dargestellt wird.

    Weiterhin wollte ich Sie fragen, ob es eine Möglichkeit gibt, auf das 'refresh’ der Objekte zu verzichten, ohne 'purge’ zu benutzen (dadurch
    werden die Antwortzeiten um ein vielfaches größer).

    Ich hoffe, dass uns jemand bei den geschilderten Problem weiterhelfen kann.

     

View Complete Thread