2015-08-25 6 views
1

я сталкиваюсь это исключение с помощью IgniteIgniteException: выполнение запроса не удалось ScanQuery

class org.apache.ignite.IgniteException: Query execution failed: GridCacheQueryBean [qry=GridCacheQueryAdapter [type=SCAN, clsName=null, clause=null, filt[email protected]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(); 

, что случилось с моим кодом

версия

ver. 1.2.0-инкубирования # 20150616-sha1: 9fb960ff 2015 Copyright (C) Apache Software Foundation

ответ

2

Ваш код выглядит правильно. Но вы обеспечили весь след? Он должен иметь причину, которая дает гораздо больше информации о причинах сбоя. Вы также можете проверить журналы удаленных узлов.

Скорее всего, у вас была какая-то ошибка сериализации. Попробуйте следующее:

  • Преобразуйте предикат в класс верхнего уровня. Анонимный класс имеет ссылку на родительский объект, поэтому возможно, что вы сериализуете то, что не должно быть сериализовано.
  • Убедитесь, что класс предиката доступен для всех узлов.