ストレス テストを実行すると、memcache に保存されているオブジェクトが破損することがあります (プロパティがなく、アクセスしようとすると "NullPointerException" が返されます)。異なる memcache 書き込み間の誤った同期に関連している可能性はありますか? 実際、コードの別の部分で、Memcache に保存されている UserAccount を次のように更新するだけです。
cache.put(tempUser.getKey(), tempUser);
..そして、私はこの方法で取得しようとします:
if (cache.contains(key)) {
readObject = (T) cache.get(key);
return readObject;
}
この取得に関連して、(たとえば)取得しようとすると、NullPointerException が発生します。
readObject.getMyProperty()
この機能 ( https://developers.google.com/appengine/docs/java/memcache/overview#Safely_Handling_Concurrent_Memcache_Updates ) を理解しようとしましたが、十分に文書化されていないようです。また、stackoverflow で次の回答も確認しました。
..しかし、それは私のニーズに合わないようです。最後に、値がキャッシュに適切に格納されていることを確認する必要があります。競合状態がその整合性に影響を与えるリスクはありません。
================================================== ============================= 更新:動作をより適切に指定しようとしています:この行で「NullPointerException」を取得します:
if(readObject!=null && readObject.getMyProperty.equals("test"))
そのため、(のみ) 完全に null ではなく、単なるプロパティになります。本当に腐っているようです。それとは別に、リトリーブ フェーズを改善する必要があることはわかっています。
================================================== ==============================
新しい更新: memcache で、キー 1 を除いて、すべてのプロパティが null に等しいオブジェクトを見つけました