我的一些App Engine搜索API查询提供了“java.util.concurrent.CancellationException:Task was canceled”异常。该错误是可重现的。
我有多个索引。在某些索引上,这些查询会运行,而在其他索引上则会失败 查询非常基础。如果我从管理控制台(https://console.cloud.google.com/appengine/search/index)运行它,它没有问题。 查询没有什么特别之处。
查询过滤2个原子字段:isReliable =“1”AND markedForDelete =“0”,并对数字字段进行排序。
代码似乎没有任何问题,因为它运行许多这样的查询没有问题,比失败的查询困难得多。
答案 0 :(得分:1)
我已经看到超时限制导致的此类异常。如果你在app之后得到它们,请检查日志。相同的执行时间(例如59-60秒)。
如果这不是面向用户的请求,您可以将其移动到具有10分钟执行限制的任务中。如果这是面向用户的请求,则可能需要对数据模型进行一些更改。例如,您可以将一些字段组合成常用查询的标志,例如isReliable =" 1" AND markedForDelete =" 0"成为代码=" 10"或" reliableToDelete =" true"。