Even with transactional cache, it's correct that updates are propagated to
CacheWriter methods. It's up to CacheStore implementation to maintain
underlying transaction on persistence store and commit or rollback it
depending on cache transaction status. Usually it's done with the help of
session listeners [1].

[1]
https://ignite.apache.org/releases/1.9.0/javadoc/org/apache/ignite/cache/store/CacheStoreSessionListener.html

-Val

On Mon, Mar 20, 2017 at 8:12 AM, Vladislav Pyatkov <vldpyat...@gmail.com>
wrote:

> I mean *CacheConfiguration.setAtomicityMode*[1]
> Because transactions makes a sense only for TRANSACTIONAL cache.
>
> [1]: https://apacheignite.readme.io/docs/transactions#section-
> atomicity-mode
>
> On Sun, Mar 19, 2017 at 11:14 PM, Vladislav Pyatkov <vldpyat...@gmail.com>
> wrote:
>
> > Hi
> >
> > Make sure are you using transactional cache.
> >
> > On Mar 19, 2017 10:32 PM, "Alisher Alimov" <alimovalis...@gmail.com>
> > wrote:
> >
> >> Hello!
> >>
> >> I found bug when using CacheStore with Transaction or it’s expected
> >> behaviour?
> >>
> >> Example:
> >>
> >> CacheConfiguration cacheConfiguration = new CacheConfiguration("test.no-
> op");
> >> cacheConfiguration.setWriteThrough(true);
> >> cacheConfiguration.setCacheWriterFactory(noOpCacheWriterFactory);
> >> cacheConfiguration.setWriteBehindBatchSize(1);
> >>
> >>
> >> try (Transaction transaction = ignite.transactions().txStart()) {
> >>     cache.put(1, 1); // will be flushed here
> >>     cache.put(2, 2);
> >>
> >>     transaction.rollback();
> >> }
> >>
> >>
> >> Does not matter if transaction was not completed or rollback, dirty
> >> records are flushed through CacheWriter and persistent storage will
> >> contains inconsistent data.
> >>
> >> Expected behaviour: only committed data must be flushed
> >>
> >>
> >> With best regards
> >> Alisher Alimov
> >> alimovalis...@gmail.com
> >>
> >>
> >>
> >>
> >>
>
>
> --
> Vladislav Pyatkov
>

Reply via email to