我们在其中一个 GAE 应用程序上遇到一致的错误(堆栈跟踪如下)。有谁知道这可能是什么原因造成的?它会抛出一个暂时性错误(这应该是一个短暂的错误),但我们始终收到此错误。
堆栈跟踪
com.google.appengine.api.search.DeleteException:暂时错误。超过 RPC 截止日期。 在 com.google.appengine.api.search.IndexImpl$2.convertException(IndexImpl.java:217) 在 com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:94) 在 com.google.appengine.api.search.FutureHelper.getInternal(FutureHelper.java:73) 在 com.google.appengine.api.search.FutureHelper.quietGet(FutureHelper.java:32) 在 com.google.appengine.api.search.IndexImpl.delete(IndexImpl.java:480)
代码
Index index = getIndex(nameSpace, indexKind);
while (true) {
List<String> docIds = new ArrayList<String>();
// Return a set of doc_ids.
GetRequest request = GetRequest.newBuilder().setReturningIdsOnly(true).build();
GetResponse<Document> response = index.getRange(request);
if (response.getResults().isEmpty()) {
break;
}
for (Document doc : response) {
docIds.add(doc.getId());
}
index.delete(docIds);
}
谢谢, 迈克
最佳答案
我们支持每个请求最多 200 次删除。事实证明,我们的后端版本中存在一个与我们如何跨多个线程并行索引(和删除)文档相关的错误。当一次索引或删除超过 76 个文档时,它会导致某些请求超时。 76 或更少的批量大小不受影响。我们在星期三下午晚些时候(太平洋时间)修复了所有地方,因此您应该能够再次批量发送最多 200 个文档,不会出现任何问题。
关于google-app-engine - 在 GAE 上删除搜索文档时出现短暂错误(一致),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24911252/