AppEngine Java:API调用file.Create()花了太长时间才响应并被取消

时间:2012-02-22 00:02:51

标签: java google-app-engine

我们在尝试将文件写入Blobstore时会遇到此异常。它通常出现一两分钟,然后一切恢复正常。 据http://code.google.com/p/googleappengine/issues/detail?id=5723报道 但标记为已关闭。

你们经历过这样的事吗?

完整的堆栈跟踪是:

com.google.apphosting.api.ApiProxy$ApiDeadlineExceededException: The API call file.Create() took too long to respond and was cancelled.
at java.lang.Thread.getStackTrace(Thread.java:1495)
at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:218)
at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:67)
at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:163)
at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:161)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:161)
at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:67)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:101)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:50)
at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:557)
at com.google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:479)
at com.google.appengine.api.files.FileServiceImpl.createNewBlobFile(FileServiceImpl.java:99)
at com.google.appengine.api.files.FileServiceImpl.createNewBlobFile(FileServiceImpl.java:81)
at ar.com.zupcat.lib.util.BlogstoreUtil.saveToBlogstoreImpl(BlogstoreUtil.java:69)

谢谢!

1 个答案:

答案 0 :(得分:3)

DeadlineExceededExceptions总是可能偶尔发生。

您应该始终编写代码来处理这些类型的瞬态错误,最有可能是在可能的情况下在短暂延迟后重试请求。

值得指出的是,文件API仍然是实验性的,我们会继续改进它的性能和可靠性 - 但你仍然应该采取防御性的代码。