BLOBストアと緊密に連携するかなり手の込んだAppEngineJavaアプリケーションがあります。何らかの理由で、あるユーザー(これは他のユーザーのために働いていました)がアップロードコードでタイムアウトエラーを受け取りました(これにより、いくつかの古いブロブが削除されます)。多くのブロブ(10個以下)を削除しないので、何が起こったのかわかりませんが、突然問題が解決するまで、彼はこの問題を何度も一貫して再現することができました...
私の懸念は、将来的に他のユーザーのためにクロップアップし始めることです。失敗するよりもブロブをクリーンアップしたくないのです。
将来的には、バックグラウンドのcronジョブを使用して、誰からも参照されていないBLOBを探して削除するようにアーキテクチャを変更する予定ですが、誰かがこの問題に光を当てることができれば幸いです。
Uncaught exception from servlet
com.google.apphosting.api.DeadlineExceededException: This request (7e6f710cb810ed92) started at 2012/11/27 08:59:54.585 UTC and was still executing at 2012/11/27 09:00:54.028 UTC.
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1037)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1326)
at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:275)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:96)
at com.google.appengine.tools.development.TimedFuture.get(TimedFuture.java:55)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:69)
at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:212)
at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:66)
at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:183)
at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:180)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:180)
at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:66)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:107)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:56)
at com.google.appengine.api.blobstore.BlobstoreServiceImpl.delete(BlobstoreServiceImpl.java:125)