Vladimir,

Agree,
I've just forget about queries :)

On Thu, Dec 13, 2018 at 5:28 PM Vladimir Ozerov <voze...@gridgain.com>
wrote:

> Andrey,
>
> We will not be able to cache the whole data set locally, as it potentially
> lead to OOME. We will have this only as an option and only for non-SQL
> updates. Thus, similar semantics is not possible.
>
> On Thu, Dec 13, 2018 at 4:56 PM Andrey Mashenkov <
> andrey.mashen...@gmail.com>
> wrote:
>
> > Roman,
> >
> > We have a ticket to improve repeatable_read mode [1] via caching entries
> > locally.
> > This should make mvcc transaction repeatable_read semantic similar to
> > non-mvcc Txs
> > and allow us to implement eviction in correct way.
> >
> > Another way is to introduce mvcc shared (read) entry locks and evict only
> > entries if no one hold any lock on it,
> > but this looks tricky and error prone as your first one as it may lead to
> > eviction policy unexpected behavior,
> > e.g some versions can be visible while others - no (evicted).
> >
> > [1] https://issues.apache.org/jira/browse/IGNITE-7371
> >
> > On Thu, Dec 13, 2018 at 4:34 PM Ilya Kasnacheev <
> ilya.kasnach...@gmail.com
> > >
> > wrote:
> >
> > > Hello!
> > >
> > > Is it possible to 'touch' entries read by MVCC transactions to ensure
> > that
> > > they are considered recent and therefore are almost never targeted by
> > > eviction?
> > >
> > > This is 1) with benefits.
> > >
> > > Regards,
> > > --
> > > Ilya Kasnacheev
> > >
> > >
> > > чт, 13 дек. 2018 г. в 16:22, Roman Kondakov <kondako...@mail.ru.invalid
> > >:
> > >
> > > > Hi igniters,
> > > >
> > > > I need your advice with the following issue. When in-memory cache
> > > > reaches it's memory limit, some data may be purged to avoid OOM
> error.
> > > > This process is described in [1]. For MVCC caches this eviction may
> > > > break repeatable read semantics. For example, if transaction reads
> key
> > > > before eviction, this key is visible for it. But if key is evicted
> some
> > > > time later, this key become invisible to anyone, including our
> > > > transaction, which means broken repeatable read semantics.
> > > >
> > > > Now we see the following solutions of this problem:
> > > >
> > > > 1. Ignore broken repeatable read semantics. If cache is set to allow
> > > > data eviction, it may lose it's data. This means that there is no
> > > > valuable information stored in cache and occasional repeatable read
> > > > violations can be tolerated.
> > > >
> > > > 2. Prohibit eviction of MVCC caches at all. For example, stop writing
> > to
> > > > caches and throw an appropriate exception in the case when there is
> no
> > > > free space in page memory. Before this exception Ignite should do
> it's
> > > > best to avoid this situation, for example, evict all non-mvcc caches
> > and
> > > > run full vacuum to free as much space as possible.
> > > >
> > > > First approach is bad because it leads to cache consistency
> violation.
> > > > Second approach is bad because it's behavior may be unexpected to
> user
> > > > if he has set an eviction policy for cache, but instead of eviction
> > > > Ignite trying to avoid it as much as possible.
> > > >
> > > > IMO first approach looks better - it is much simpler to implement and
> > > > met user expectations in all points except possible repeatable read
> > > > violations.
> > > >
> > > > What do you think?
> > > >
> > > >
> > > > [1] https://apacheignite.readme.io/docs/evictions
> > > >
> > > > --
> > > > Kind Regards
> > > > Roman Kondakov
> > > >
> > > >
> > >
> >
> >
> > --
> > Best regards,
> > Andrey V. Mashenkov
> >
>


-- 
Best regards,
Andrey V. Mashenkov

Reply via email to