SQL Queries never instantiate or touch cache entries. Thus SQL queries never affect any expiration policies.
Sergi 2017-04-19 16:42 GMT+03:00 ALEKSEY KUZNETSOV <alkuznetsov...@gmail.com>: > I wonder if "SELECT" clause should *touch *an entry? For instance, > cache.contains() doesn't *touch*. > > вт, 18 апр. 2017 г. в 12:21, ALEKSEY KUZNETSOV <alkuznetsov...@gmail.com>: > > > Yeah. I've already run the test with two caches. Definately, the bug > > hidden in cache.query() method. cache.query() calls > > IgniteH2Indexing#queryLocalSql(), which calls executeSqlQueryWithTimer, > > and then it sinks into JdbcPreparedStatement.executeQuery(). There is no > > key-value operations subsequent > > > > пн, 17 апр. 2017 г. в 21:15, Denis Magda <dma...@apache.org>: > > > >> It doesn’t matter who is right and who is wrong unless someone gets to > >> the bottom of the issue debugging it. > >> > >> I would suggest to create a simple unit test with two caches and trying > >> to reproduce the following without computations and other redundant > stuff. > >> Would you like to work on this? > >> > >> — > >> Denis > >> > >> > On Apr 17, 2017, at 12:44 AM, ALEKSEY KUZNETSOV < > >> alkuznetsov...@gmail.com> wrote: > >> > > >> > Why do u think so. > >> > First of all, the output above is not correct. After 3 iteration > >> key-value > >> > API strats to return empty value. > >> > > >> > Every 5 seconds(iteration sleep time) > >> repository.getAttributes("1").size() > >> > is got called. Which makes an entry "touch" and the entry wont be > >> expired > >> > for as long as 10 seconds. > >> > > >> > Expiry policy says: > >> > > >> > An {@link ExpiryPolicy} that defines the expiry {@link Duration} > >> > * of a Cache Entry based on when it was last touched. A touch includes > >> > ** creation, update or **access**.* > >> > > >> > > >> > пт, 14 апр. 2017 г. в 18:42, Denis Magda <dma...@apache.org>: > >> > > >> >> The iteration happens multiple time which means that the key-value > API > >> had > >> >> to return an empty result set on second or third iteration. But this > >> never > >> >> happens. > >> >> > >> >> In any case, do you want to find a root of the issue and fix it? > >> >> Otherwise, we can update the description and wait while someone else > >> fixes > >> >> it. > >> >> > >> >> — > >> >> Denis > >> >> > >> >>> On Apr 14, 2017, at 1:33 AM, ALEKSEY KUZNETSOV < > >> alkuznetsov...@gmail.com> > >> >> wrote: > >> >>> > >> >>> Because expiry time is 10 seconds, while loop iterates every 5 > seconds > >> >>> > >> >>> пт, 14 апр. 2017 г. в 11:32, ALEKSEY KUZNETSOV < > >> alkuznetsov...@gmail.com > >> >>> : > >> >>> > >> >>>> No, the bug is in SQL query, not key-value storage. > >> >>>> > >> >>>> пт, 14 апр. 2017 г. в 11:11, Vladislav Pyatkov < > vldpyat...@gmail.com > >> >: > >> >>>> > >> >>>>> Denis, Aleksey, > >> >>>>> > >> >>>>> It is correct, remember I have already said something like[1]. > >> >>>>> I have no idea, why this happened in this case with SQL. > >> >>>>> > >> >>>>> [1]: > >> >>>>> > >> >>>>> > >> >> > >> http://apache-ignite-developers.2346864.n4.nabble. > com/TouchedExpiryPolicy-works-incorrect-in-some-cases- > IGNITE-4401-td16349.html#a16356 > >> >>>>> > >> >>>>> On Fri, Apr 14, 2017 at 4:29 AM, Denis Magda <dma...@apache.org> > >> >> wrote: > >> >>>>> > >> >>>>>> I could reproduce the issue and this should be what Denis K. > meant > >> by > >> >>>>>> saying “expiration policy works incorrectly”. > >> >>>>>> > >> >>>>>> If you remove the expiration policy from the caches' > configuration > >> >> then > >> >>>>>> the issue disappears. In general, SQL engine processes an > >> expiration > >> >>>>> event > >> >>>>>> properly because the SQL queries return an empty result set as > >> >> expected > >> >>>>> but > >> >>>>>> something doesn’t work well with key-value operations. > >> >>>>>> > >> >>>>>> *Denis K*, *Vlad P.*, as creators of the ticket please confirm > that > >> >> this > >> >>>>>> is the case. > >> >>>>>> > >> >>>>>> Please keep debugging this and switch to the latest Ignite > version. > >> >>>>>> > >> >>>>>> — > >> >>>>>> Denis > >> >>>>>> > >> >>>>>> > >> >>>>>>> On Apr 13, 2017, at 4:22 AM, ALEKSEY KUZNETSOV < > >> >>>>> alkuznetsov...@gmail.com> > >> >>>>>> wrote: > >> >>>>>>> > >> >>>>>>> any feedback? > >> >>>>>>> > >> >>>>>>> чт, 13 апр. 2017 г. в 11:51, ALEKSEY KUZNETSOV < > >> >>>>> alkuznetsov...@gmail.com > >> >>>>>>> : > >> >>>>>>> > >> >>>>>>>> You should run ExpiryPolicyTest. The output should contain > >> strings > >> >>>>> like > >> >>>>>>>> contains? new AffinityKey("1", "1"): and contains?2 new > >> >>>>>> AffinityKey("1", " > >> >>>>>>>> 1"): and empty cursor? = > >> >>>>>>>> If you look at them you will see, that cache contains affinity > >> key > >> >>>>> new > >> >>>>>>>> AffinityKey("1", "1") whereas cursor is empty(on second > >> iteration). > >> >>>>> From > >> >>>>>>>> this output you can conclude SQL query returns icorrect > >> data(empty > >> >>>>>> value) > >> >>>>>>>> > >> >>>>>>>> > >> >>>>>>>> чт, 13 апр. 2017 г. в 3:42, Denis Magda <dma...@apache.org>: > >> >>>>>>>> > >> >>>>>>>>> Bluntly speaking I have no idea where to look and what to > >> expect. > >> >>>>> This > >> >>>>>> is > >> >>>>>>>>> output of the test execution of my machine: > >> >>>>>>>>> > >> >>>>>>>>> SQL res: [[1], [d]] > >> >>>>>>>>> 2 > >> >>>>>>>>> Op consume: 303 > >> >>>>>>>>> Value: org.ignite.test.EDU@22db8f4 > >> >>>>>>>>> SQL res: [] > >> >>>>>>>>> 0 > >> >>>>>>>>> Op consume: 9 > >> >>>>>>>>> Value: org.ignite.test.EDU@29caf222 > >> >>>>>>>>> SQL res: [] > >> >>>>>>>>> 0 > >> >>>>>>>>> Op consume: 15 > >> >>>>>>>>> Value: org.ignite.test.EDU@7cd1ac19 > >> >>>>>>>>> SQL res: [] > >> >>>>>>>>> 0 > >> >>>>>>>>> Op consume: 5 > >> >>>>>>>>> > >> >>>>>>>>> Please be more specific, there are too many files in the code. > >> >>>>>>>>> > >> >>>>>>>>> — > >> >>>>>>>>> Denis > >> >>>>>>>>> > >> >>>>>>>>>> On Apr 12, 2017, at 4:50 AM, ALEKSEY KUZNETSOV < > >> >>>>>>>>> alkuznetsov...@gmail.com> wrote: > >> >>>>>>>>>> > >> >>>>>>>>>> So what do u think about the issue ? > >> >>>>>>>>>> > >> >>>>>>>>>> ср, 12 апр. 2017 г. в 10:42, ALEKSEY KUZNETSOV < > >> >>>>>>>>> alkuznetsov...@gmail.com>: > >> >>>>>>>>>> > >> >>>>>>>>>>> I have already attached simlified version. Shall i simplify > it > >> >>>>> more ? > >> >>>>>>>>>>> > >> >>>>>>>>>>> вт, 11 апр. 2017 г. в 19:28, Denis Magda <dma...@apache.org > >: > >> >>>>>>>>>>> > >> >>>>>>>>>>> Can you attach the simplified version? Just want to avoid > any > >> >> side > >> >>>>>>>>> effects. > >> >>>>>>>>>>> > >> >>>>>>>>>>> — > >> >>>>>>>>>>> Denis > >> >>>>>>>>>>> > >> >>>>>>>>>>>> On Apr 11, 2017, at 9:14 AM, ALEKSEY KUZNETSOV < > >> >>>>>>>>> alkuznetsov...@gmail.com> > >> >>>>>>>>>>> wrote: > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> I took it from > >> >> https://issues.apache.org/jira/browse/IGNITE-4401 > >> >>>>> < > >> >>>>>>>>>>> https://issues.apache.org/jira/browse/IGNITE-4401> and > >> >>>>> simplified . > >> >>>>>>>>> See > >> >>>>>>>>>>> in attached > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> вт, 11 апр. 2017 г. в 19:03, Denis Magda < > dma...@apache.org > >> >>>>>> <mailto: > >> >>>>>>>>>>> dma...@apache.org>>: > >> >>>>>>>>>>>> Hello, > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> Do you have sample code? > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> — > >> >>>>>>>>>>>> Denis > >> >>>>>>>>>>>>> On Apr 11, 2017, at 2:45 AM, ALEKSEY KUZNETSOV < > >> >>>>>>>>>>> alkuznetsov...@gmail.com <mailto:alkuznetsov...@gmail.com>> > >> >>>>> wrote: > >> >>>>>>>>>>>>> > >> >>>>>>>>>>>>> Hi, igniters! > >> >>>>>>>>>>>>> While doing > >> https://issues.apache.org/jira/browse/IGNITE-4401 > >> >> < > >> >>>>>>>>>>> https://issues.apache.org/jira/browse/IGNITE-4401> ticket i > >> came > >> >>>>>>>>>>>>> across the fact that cache querying returns null , while > >> cache > >> >>>>>> still > >> >>>>>>>>>>> has > >> >>>>>>>>>>>>> got entry. > >> >>>>>>>>>>>>> Cache query : SELECT nameProp FROM EDUProp WHERE EDUId = 1 > >> >>>>>>>>>>>>> Cache get operation : ignite().cache("eduPropCache") > .get(new > >> >>>>>>>>>>> AffinityKey("1", > >> >>>>>>>>>>>>> "1")) non-null > >> >>>>>>>>>>>>> I cannot even imagine what could be wrong with it. > >> >>>>>>>>>>>>> > >> >>>>>>>>>>>>> > >> >>>>>>>>>>>>> > >> >>>>>>>>>>>>> -- > >> >>>>>>>>>>>>> > >> >>>>>>>>>>>>> *Best Regards,* > >> >>>>>>>>>>>>> > >> >>>>>>>>>>>>> *Kuznetsov Aleksey* > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> -- > >> >>>>>>>>>>>> Best Regards, > >> >>>>>>>>>>>> > >> >>>>>>>>>>>> Kuznetsov Aleksey > >> >>>>>>>>>>>> > >> >>>>>>>>>>> > >> >>>>>>>>>>> -- > >> >>>>>>>>>>> > >> >>>>>>>>>>> *Best Regards,* > >> >>>>>>>>>>> > >> >>>>>>>>>>> *Kuznetsov Aleksey* > >> >>>>>>>>>>> > >> >>>>>>>>>> -- > >> >>>>>>>>>> > >> >>>>>>>>>> *Best Regards,* > >> >>>>>>>>>> > >> >>>>>>>>>> *Kuznetsov Aleksey* > >> >>>>>>>>> > >> >>>>>>>>> -- > >> >>>>>>>> > >> >>>>>>>> *Best Regards,* > >> >>>>>>>> > >> >>>>>>>> *Kuznetsov Aleksey* > >> >>>>>>>> > >> >>>>>>> -- > >> >>>>>>> > >> >>>>>>> *Best Regards,* > >> >>>>>>> > >> >>>>>>> *Kuznetsov Aleksey* > >> >>>>>> > >> >>>>>> > >> >>>>> > >> >>>>> > >> >>>>> -- > >> >>>>> Vladislav Pyatkov > >> >>>>> > >> >>>> -- > >> >>>> > >> >>>> *Best Regards,* > >> >>>> > >> >>>> *Kuznetsov Aleksey* > >> >>>> > >> >>> -- > >> >>> > >> >>> *Best Regards,* > >> >>> > >> >>> *Kuznetsov Aleksey* > >> >> > >> >> -- > >> > > >> > *Best Regards,* > >> > > >> > *Kuznetsov Aleksey* > >> > >> -- > > > > *Best Regards,* > > > > *Kuznetsov Aleksey* > > > -- > > *Best Regards,* > > *Kuznetsov Aleksey* >