I think that If fallbacks(...) returns an empty nodes collection, then we
should fail with an exception.

2016-12-28 22:06 GMT+03:00 Denis Magda <dma...@apache.org>:

> Alexander, added you to the contributors list. Please check that you can
> assign the ticket on yourself.
>
> —
> Denis
>
> > On Dec 28, 2016, at 2:15 AM, Александр Меньшиков <sharple...@gmail.com>
> wrote:
> >
> >
> > Username: sharpler
> >
> > Full Name: Alexander Menshikov
> >
> >
> >
> > 2016-12-27 22:57 GMT+03:00 Denis Magda <dma...@apache.org <mailto:
> dma...@apache.org>>:
> > 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
> <mailto: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>
> > > <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