查询执行失败ScanQuery

查询执行失败ScanQuery

我在使用Ignite时遇到此异常

class org.apache.ignite.IgniteException: Query execution failed: GridCacheQueryBean [qry=GridCacheQueryAdapter [type=SCAN, clsName=null, clause=null, filter=org.apache.ignite.yardstick.cache.IgniteScanQueryBenchmark$1@5cbed480, part=null, incMeta=false, metrics=GridCacheQueryMetricsAdapter [minTime=41, maxTime=41, avgTime=41.0, execs=1, fails=1, executed=true], pageSize=1024, timeout=0, keepAll=true, incBackups=false, dedup=false, prj=null, keepPortable=false, subjId=0ae47ff7-9cc1-4b57-88cf-8453f5f21625, taskHash=0], rdc=null, trans=null]
at org.apache.ignite.internal.processors.cache.query.GridCacheQueryFutureAdapter.next(GridCacheQueryFutureAdapter.java:166)
at org.apache.ignite.internal.processors.cache.IgniteCacheProxy$2.onHasNext(IgniteCacheProxy.java:406)
at org.apache.ignite.internal.util.GridCloseableIteratorAdapter.hasNextX(GridCloseableIteratorAdapter.java:53)
at org.apache.ignite.internal.util.lang.GridIteratorAdapter.hasNext(GridIteratorAdapter.java:45)
at org.apache.ignite.internal.processors.cache.QueryCursorImpl.getAll(QueryCursorImpl.java:71)


还有我的代码

 IgniteBiPredicate<Integer, Person> filter = new IgniteBiPredicate<Integer, Person>() {
        @Override
        public boolean apply(Integer key, Person p) {
            return p.getSalary() >= minSalary && p.getSalary() <= maxSalary;
        }
    };

    QueryCursor<Person> cursor = cache.query(new ScanQuery(filter));

    return cursor.getAll();


我的代码有什么问题




  
    
      版本1.2.0-incubating#20150616-sha1:9fb960ff
      2015版权所有(C)Apache软件基金会

最佳答案

您的代码看起来正确。但是您提供了完整的痕迹吗?它的原因应能给出有关故障原因的更多信息。您还可以检查远程节点日志。

您很可能有某种序列化错误。请尝试以下操作:


将您的谓词转换为顶级类。匿名类引用了父对象,因此您可能正在序列化不应序列化的内容。
确保谓词类在所有节点上均可用。

关于java - IgniteException:查询执行失败ScanQuery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32209370/

10-10 22:28