【问题标题】:App Engine SearchAPI: java.util.concurrent.CancellationException: Task was cancelledApp Engine SearchAPI:java.util.concurrent.CancellationException:任务已取消
【发布时间】:2016-08-02 08:25:30
【问题描述】:

我的一些 App Engine 搜索 API 查询给出了“java.util.concurrent.CancellationException:任务被取消”异常。错误是可重现的。

我有多个索引。在某些索引上,这些查询会运行,而在其他索引上它们会失败。 查询非常基础。如果我从管理控制台 (https://console.cloud.google.com/appengine/search/index) 运行它,它没有问题。 查询没有什么特别之处。

查询过滤 2 个原子字段:isReliable = "1" ANDmarkedForDelete = "0",并按数字字段排序。

代码似乎没有任何问题,因为它运行许多这样的查询都没有问题,比失败的查询困难得多。

【问题讨论】:

  • 我见过这种由超时限制引起的异常。如果您在应用程序之后获得它们,请检查日志。相同的执行时间(例如 59-60 秒)。
  • 确实是这个问题。所以问题是为什么需要这么长时间。在管理控制台中运行它,查询需要 25 秒。我认为慢与排序标准的相等值太多有关,不建议这样做。

标签: java google-app-engine full-text-search


【解决方案1】:

我见过由超时限制引起的此类异常。如果您在应用程序之后获得它们,请检查日志。相同的执行时间(例如 59-60 秒)。

如果这不是面向用户的请求,您可以将其移动到具有 10 分钟执行限制的任务中。如果这是一个面向用户的请求,则可能需要对数据模型进行一些更改。例如,您可以将一些字段组合成常用查询的标志,例如isReliable = "1" AND mappedForDelete = "0" 变为 code = "10" 或 "reliableToDelete = "true"。

【讨论】:

猜你喜欢
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 2011-03-25
  • 2018-05-19
相关资源
最近更新 更多