Alexander,

I need to know your JIRA ID in order to add you to the contributors list.

As for your questions, this situation might be caused by the race when a cache 
is being stopped and there are still scan queries running in parallel. So, in 
general it’s not about data loss.

Sam, Alex G., could you share your thoughts in regards to the proper fix?

—
Denis
 
> On Dec 26, 2016, at 2:43 AM, Александр Меньшиков <sharple...@gmail.com> wrote:
> 
> Hello everyone.
> 
> I want to pick up *https://issues.apache.org/jira/browse/IGNITE-4487
> <https://issues.apache.org/jira/browse/IGNITE-4487>* as my
> first issue.
> 
> Please add me as contributor.
> 
> I already found that: in inner class
> 'GridCacheQueryAdapter.ScanQueryFallbackClosableIterator' in constructor is
> called with method 'init()', but method 'init()' cannot be called with an
> empty field 'nodes'. In source code it looks like:
> 
> private ScanQueryFallbackClosableIterator(int part, GridCacheQueryAdapter
> qry,
>            GridCacheQueryManager qryMgr, GridCacheContext cctx) {
>            this.qry = qry;
>            this.qryMgr = qryMgr;
>            this.cctx = cctx;
>            this.part = part;
> 
>            nodes = fallbacks(cctx.discovery().topologyVersionEx());
>            // !!! Here nodes.isEmpty()==true, and init() will fail in the
> future. !!!
>            init();
>        }
> 
> I can fix it by adding some check in code, but i must know what behavior
> are best in this case? As I understand it, the list of nodes is empty if
> there are no nodes with the current partition, which means data loss, and
> either need to return a meaningful exception, or ignore this situation. But
> maybe I missed something.

Reply via email to