我们在其中一个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);
}
谢谢, 麦克
答案 0 :(得分:2)
我们每个请求最多支持200次删除。事实证明,我们的后端版本中存在一个与我们如何跨多个线程并行索引(和删除)文档相关的错误。在一次索引或删除超过76个文档时,它会导致一些请求超时。批量大小为76或更小不受影响。我们在星期三下午(太平洋时间)到处都找到了解决方案,因此您应该能够再次发送最多200份文档的批次。
答案 1 :(得分:0)
删除查询超出了RPC截止日期。要传递多少文件才能删除?尝试分批50个。这应该解决问题。