App Engine SearchAPI:java.util.concurrent.CancellationException:任务已取消
App Engine SearchAPI: java.util.concurrent.CancellationException: Task was cancelled
我的一些 App Engine 搜索 API 查询给出了 'java.util.concurrent.CancellationException: Task was cancelled' 异常。该错误是可重现的。
我有多个索引。在某些索引上,那些查询 运行,在其他索引上它们失败了。
查询非常基本。如果我从管理控制台 (https://console.cloud.google.com/appengine/search/index) 运行 它,它没有问题。
查询没有什么特别之处。
查询筛选 2 个原子字段:isReliable = "1" AND markedForDelete = "0",并按数字字段排序。
代码似乎没有问题,因为它 运行 许多这样的查询都没有问题,比失败的查询要困难得多。
我见过这种由超时限制引起的异常。如果你在应用程序之后得到它们,请检查日志。相同的执行时间(例如 59-60 秒)。
如果这不是面向用户的请求,您可以将其移至任务中,该任务的执行时间限制为 10 分钟。如果这是面向用户的请求,则可能需要对数据模型进行一些更改。例如,您可以将一些字段组合成标志以用于频繁使用的查询,例如isReliable = "1" AND markedForDelete = "0" 变为代码 = "10" 或 "reliableToDelete = "true"。
我的一些 App Engine 搜索 API 查询给出了 'java.util.concurrent.CancellationException: Task was cancelled' 异常。该错误是可重现的。
我有多个索引。在某些索引上,那些查询 运行,在其他索引上它们失败了。 查询非常基本。如果我从管理控制台 (https://console.cloud.google.com/appengine/search/index) 运行 它,它没有问题。 查询没有什么特别之处。
查询筛选 2 个原子字段:isReliable = "1" AND markedForDelete = "0",并按数字字段排序。
代码似乎没有问题,因为它 运行 许多这样的查询都没有问题,比失败的查询要困难得多。
我见过这种由超时限制引起的异常。如果你在应用程序之后得到它们,请检查日志。相同的执行时间(例如 59-60 秒)。
如果这不是面向用户的请求,您可以将其移至任务中,该任务的执行时间限制为 10 分钟。如果这是面向用户的请求,则可能需要对数据模型进行一些更改。例如,您可以将一些字段组合成标志以用于频繁使用的查询,例如isReliable = "1" AND markedForDelete = "0" 变为代码 = "10" 或 "reliableToDelete = "true"。