google-app-engine - 在 GAE 上删除搜索文档时出现短暂错误(一致)

标签 google-app-engine google-cloud-datastore gae-search

我们在其中一个 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/

相关文章:

python - 在 App Engine 中为 Web 请求实现速率限制或 throttle 算法的有效方法是什么?

python - GQL 与 Google 应用引擎和 Google 云数据存储使用的语言相同吗?

java - 从 GAE 数据存储中读取多对多对象的最有效方法

google-app-engine - 如何使用 Google App Engine Search API 找到最接近的文档?

google-app-engine - 使用 Golang 的数据存储实体上的 GAE 全文搜索 API

ruby-on-rails - 谷歌云 ruby​​ 部署和 ruby​​-docker

java - 高效使用 GAE DataStore

android - 如何将数据从 Android 移动设备发送到 Google App Engine 数据存储区?

go - 如何忽略 Golang 的 Google Datastore 结构中的零值?

google-app-engine - GAE 搜索 API - 对 Twitter 风格的扇出有用吗?