バックグラウンド:
最近、GAE SDK 1.7.3 で JDO 2.0 / Datanucleus 3.1.1 に更新しました。memcache への第 2 レベルのキャッシュがあり、子エンティティに対して特定の操作を行うと、キャッシュに古いデータが表示されることがわかりました。たとえば、セットからいくつかの子を削除し、しばらくしてから新しい子を追加すると、データストアは更新されますが、キャッシュは更新されないため、後続の読み取りは古いデータを送り返します。
とにかく、それは別の問題です-私の回避策は、キャッシュエントリが無効化されて削除されるように、更新をトランザクションに入れることでした(トランザクションはmemcacheに変更を書き込みません)。
これは機能します。ただし、所有されていない関係がかなりあるため、5 つを超えるエンティティ グループを更新することがあります。たとえば、行のロード全体に「完了」のフラグを立てる一括フラグ操作を行います。奇妙なことは、XG トランザクションが 5 つのエンティティ グループに制限されていることを Google のドキュメントで明示的に述べているにもかかわらず、IT WORKS です。ここで何か不足していますか?
また、JDO の XG トランザクションを明示的に有効にしていないことにも言及する必要があります。繰り返しますが、機能しているようです。ログは、実際にトランザクションを行っていることを示しています。
私は少し当惑しています。これは将来的に機能しなくなる可能性がありますか?JDO は何らかの形でトランザクションのサイズを管理していますか? XG トランザクションは最新の JDO によって自動的に管理されますか、それともデフォルトでオンになっていますか?