2

我们的一个 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。 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);
    }

谢谢,迈克

4

2 回答 2

2

我们支持每个请求最多 200 次删除。事实证明,我们在后端版本中有一个错误,与我们如何跨多个线程并行索引(和删除)文档有关。当一次索引或删除超过 76 个文档时,它会导致一些请求超时。76 或更少的批次大小不受影响。我们在周三下午晚些时候(太平洋时间)得到了修复,因此您应该能够再次批量发送多达 200 个文档而不会出现问题。

于 2014-07-25T19:42:02.893 回答
0

删除查询超出了 RPC 截止日期。有多少文件被传递删除?尝试分批 50 个。这应该可以解决问题。

于 2014-07-23T15:03:18.383 回答