オブジェクト化と結果整合性に関連する奇妙な動作が見られます。App Engine Java 開発サーバーに HTTP リクエストを行ういくつかの統合テストを実行しているときに、この動作に気付きました。
これらのテストが実際のアプリ エンジン環境に対して実行されたときにも機能することを望んでいたため、最終的に整合性のあるクエリに基づいて結果を返す要求を繰り返すことで、最終的な整合性を処理しています。
以前、誤って ObjectifyFilter を web.xml の間違った場所に配置したため、ObjectifyFilter が実行されませんでした。実際に実行できるようにフィルタ チェーンの先頭に移動したので、すべてのクエリが常に一貫した結果を返すように見えます。つまり、結果整合性はもうありません。
たとえば、あるテストでは次のことが行われます。
- ユーザー名を持つユーザーを追加するリクエスト
- ユーザー名とパスワードでユーザーを承認しようとするリクエスト。これにより、指定されたユーザー名を持つユーザーのグローバル クエリが作成され、クエリは結果的に一貫性が保たれますが、常にユーザー エンティティが検出されます。
何が起こっているのかわかりません。
より詳しい情報:
- ofy().toString がリクエストごとに異なる値を返すことを確認しました。
- -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50 を使用しています
- Appengine SDK バージョン 1.8.6
- トランザクション内ですべての書き込みを行っています