这可能与Google File Service closeFinally() timeout有关。
My Java GAE应用程序在SDK 1.8.2上运行,并且在FileWriteChannel上调用closeFinally()时遇到translateException。我将更新SDK并迁移到新的Cloud Storage API,但需要尽快为客户解决此异常,因此我想知道是否有人对此问题有一些了解以便快速解决问题。
以下是导致问题的代码的简化:
AppEngineFile writableFile = fileService.createNewGSFile(optionsBuilder.build());
String gcsWritePath = writableFile.getFullPath();
FileWriteChannel writeChannel = fileService.openWriteChannel(writableFile, true);
for(conditions) {
Do stuff and write to gcsWritePath
if(recordsWritten > threshold) {
Kick off new task with a startAtparam to avoid OOM and timeouts
break;
}
}
if(all records written) {
writeChannel.closeFinally(); // Exception happens here
}
和例外细节
java.io.IOException的 在com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:621) 在com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:594) 在com.google.appengine.api.files.FileServiceImpl.close(FileServiceImpl.java:565) 在com.google.appengine.api.files.FileServiceImpl.close(FileServiceImpl.java:457) 在com.google.appengine.api.files.FileWriteChannelImpl.closeFinally(FileWriteChannelImpl.java:97)
只有更长时间运行的任务(例如5分钟以上)才会出现异常,因此看起来这可能是超时。我试过调整门槛但没有太多运气。我还尝试查看FileServiceImpl.java和ApiProxy.java的应用引擎sdk来源,但没有找到任何好的线索。
有没有人对可能导致这种情况的原因有任何想法?