3

エンティティにobjectify の@Cached注釈を使用しています。明らかに、これは、エンティティに対して PUT を実行するたびに、それが memcache にも書き込まれることを意味します。ただし、最近、appengine で memcache がダウンし、その結果、objectify がエンティティを memcache に書き込めない (データストアへの書き込みは正常に行われる) のを見てきました。

ただし、この失敗では、objectify は memcache 例外をスローします。具体的には:com.google.appengine.api.memcache.MemcacheServiceException: Memcache put: Set failed to set 1 keys:

これらの例外をスローしないようにオブジェクト化する方法はありますか? それらは比較的無害であり、try/catch をどこにでも追加したくありません。

4

1 に答える 1

5

これは、実際には MemcacheService 実装の既知の問題です。デフォルトでは、LogAndContinueErrorHandlerを使用することになっています。これは、エラーをログに記録してから無害に続行することだけを想定しています。

残念ながら、非同期 API が Memcache サービスに実装されたときに、誤ってエラー ハンドラーの使用が中断されました。GAE 課題トラッカーのここにスターを付けることができる未解決の問題があります。

したがって、これには 2 つの選択肢があります。Objectify のソースを編集し、例外が発生する前にすべての例外をキャッチ/無視するか、GAE SDK の基礎となる MemcacheService 実装の修正を待つかです。

于 2012-02-13T08:17:15.570 に答える