DatastoreやMemcacheのAPIコールは、ときどき固まる
例えばDatastore APIで多数のエンティティに読み書きしていると、数100回〜数1000回に1回くらい?(すごくおおざっぱな印象)の割合で延々とブロックされて、
com.google.appengine.api.datastore.DatastoreTimeoutException: Unknown
が出たり、もしくは30秒タイムアウト(DeadlineExceededException)が発生したりします。コードのバグやエンティティの状態とは無関係のようです。出る場所は、たいていPersistenceManagerのmakePersistenceメソッドかcloseメソッドの呼び出しのところ。
またMemcache APIでも、getメソッドのところでブロックされて、タイムアウトすることがしばしば。私のアプリだけ?
呼び出したら即時にエラーになってくれればリカバリのしようがあるけど、ずるずる引きずられて30秒過ぎてしまうので、クライアントにそのままエラーが返ってしまって困ります。
まあこれは、クラウドではよくあることってことでしょうか。
# もしかして、30秒タイムアウトのルールって、これを見越してのことかな?