2016-04-11 11 views
0

Ich habe versucht zu untersuchen, welche Verhaltensweisen von einer DeadlineExceededException beim Verwenden von Objectify mit aktiviertem Caching stammen können.Wie veralte ich mit Objectify veraltete Daten aus dem Cache?

Meine bisherigen Experimente waren wie folgt: 1) Speichern Sie eine Entity oder Entitäten, 2) dann für die meiste verbleibende Ausführungszeit schlafen und 3) einige Updates in einer Infite Schleife, bis die Anfrage abgebrochen wird. 4) Ob der Cache mit erfolgreichen Schreibvorgängen im Datenspeicher synchronisiert ist, wird in einer separaten Anfrage überprüft.

"Einige Updates" bedeutet, eine Menge (50) von Strings in einem Objekt zu ändern und dann zurückzuschreiben. Ich habe auch versucht, einige Objekte in einer Transaktion zu aktualisieren, um zu testen, ob ich beim Laden der Entitäten wieder inkonsistente Ergebnisse erhalten kann. Bisher habe ich nach tausenden von Tests keine einzige inkonsistente Entität aus dem Cache gefunden.

Kann ich also irgendwie eine Ladung einer vermutlich zwischengespeicherten Entität provozieren, die mit der Entität im Datenspeicher inkonsistent ist?

Antwort

0

Es gibt viele mögliche Gründe dafür. Wenn Sie Änderungen in einer einzigen Anfrage zu machen, sind zu sehen, werden Sie wahrscheinlich die Sitzung Cache in Betrieb:

https://github.com/objectify/objectify/wiki/Caching

Wenn Sie Fragen in vielen Anfragen sind zu machen, können Sie die Ergebnisse der Eventual Consistency sehen werden :

https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/

Vielleicht Sitzung Cache Kontamination Sie sehen, weil Sie die ObjectifyFilter nicht installiert haben? Aktuelle Versionen von Objectify geben dir eine böse Warnung, wenn du es nicht tust, aber vielleicht hast du eine alte Version?

Verwandte Themen