Fwd: Eviction Events with offheap values

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Fwd: Eviction Events with offheap values

dsetrakyan
Guys,

Resending this question to the dev list. Doesn’t Ignite fire an eviction
event whenever an entry is evicted from off-heap memory?

D.

---------- Forwarded message ----------
From: Alexei Scherbakov <[hidden email]>
Date: Mon, May 16, 2016 at 1:33 AM
Subject: Re: Eviction Events with offheap values
To: [hidden email]


Andrey, thanks for the clarification.

Abraham, it seems EvictionPolicy is not appropriate solution for your case.
BTW, why user session expiration logic is related to cache size ?
In case user sessions expire by timeout the more appropriate solution would
be listening to
EVT_CACHE_OBJECT_EXPIRED event.
You can also set eager expiration by calling
CacheConfiguration.setEagerTtl(true)
to make Ignite expire values automatically.

Did this help?


2016-05-13 19:49 GMT+03:00 Andrey Gura <[hidden email]>:

> Alexei, Abraham,
>
> Eviction policy configuration doesn't make sense for OFFHEAP_TIERED mode.
> Eviction policy works only for on heap entries in order to evict entries to
> offheap.
>
> For eviction of entries from offheap memory Ignite internaly uses other
> LRU eviction policy and there is no way to change this behaviour via
> configuration.
>
> On Thu, May 12, 2016 at 7:14 PM, Alexei Scherbakov <
> [hidden email]> wrote:
>
>> Hi,
>>
>> I was not able to reproduce your case.
>> In my test I have correct old value on eviction event.
>> Please provide a reproducer.
>>
>> BTW: what are you trying to accomplish? Generally events are not very
>> good for cluster performance and may not be delivered in case of the
>> listener node failure.
>>
>> 2016-05-10 9:26 GMT+03:00 abraham <[hidden email]>:
>>
>>> Hi,
>>>
>>> I am re-posting an earlier message to which I did not get any replies
>>> because I was not subscribed to the mailing list:
>>>
>>> I am trying to get the values from the eviction events. This works fine
>>> with
>>> the ONHEAP_TIERED version but not with OFFHEAP_VALUES and OFFHEAP_TIERED
>>> -
>>> in that cases the hasOldValue is true but the actual value is null.
>>>
>>> What we are trying to accomplish is to persist entries to a database only
>>> when they either get removed, expired or evicted because the max cache
>>> size
>>> is reached and it looks like those events are the only way to accomplish
>>> this.
>>>
>>> A quick glance at the code would suggest that in the
>>> org.apache.ignite.internal.processors.cache.GridCacheEvictionManager one
>>> could replace line 708 from
>>>
>>> CacheObject oldVal = recordable ? entry.rawGet() : null;
>>>
>>> to
>>>
>>> CacheObject oldVal = recordable ? entry.rawGetOrUnmarshal(false) : null;
>>>
>>> to get the values attached to the events. Would that work?
>>>
>>> Thanks,
>>>
>>> Abraham
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>> http://apache-ignite-users.70518.x6.nabble.com/Eviction-Events-with-offheap-values-tp4853.html
>>> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
>>>
>>
>>
>>
>> --
>>
>> Best regards,
>> Alexei Scherbakov
>>
>
>
>
> --
> Andrey Gura
> GridGain Systems, Inc.
> www.gridgain.com
>



--

Best regards,
Alexei Scherbakov
Reply | Threaded
Open this post in threaded view
|

Re: Eviction Events with offheap values

Andrey Gura
As I can see from GridCacheSwapManager code Ignite doesn't fire eviction
events from offheap.

On offheap evict GridCacheSwapManager does teh following:

1. Updates onOffheapEvict metric if enabled
2. Fires EVT_CACHE_OBJECT_SWAPPED event if swap enabled.

On Tue, May 17, 2016 at 3:44 AM, Dmitriy Setrakyan <[hidden email]>
wrote:

> Guys,
>
> Resending this question to the dev list. Doesn’t Ignite fire an eviction
> event whenever an entry is evicted from off-heap memory?
>
> D.
>
> ---------- Forwarded message ----------
> From: Alexei Scherbakov <[hidden email]>
> Date: Mon, May 16, 2016 at 1:33 AM
> Subject: Re: Eviction Events with offheap values
> To: [hidden email]
>
>
> Andrey, thanks for the clarification.
>
> Abraham, it seems EvictionPolicy is not appropriate solution for your case.
> BTW, why user session expiration logic is related to cache size ?
> In case user sessions expire by timeout the more appropriate solution would
> be listening to
> EVT_CACHE_OBJECT_EXPIRED event.
> You can also set eager expiration by calling
> CacheConfiguration.setEagerTtl(true)
> to make Ignite expire values automatically.
>
> Did this help?
>
>
> 2016-05-13 19:49 GMT+03:00 Andrey Gura <[hidden email]>:
>
> > Alexei, Abraham,
> >
> > Eviction policy configuration doesn't make sense for OFFHEAP_TIERED mode.
> > Eviction policy works only for on heap entries in order to evict entries
> to
> > offheap.
> >
> > For eviction of entries from offheap memory Ignite internaly uses other
> > LRU eviction policy and there is no way to change this behaviour via
> > configuration.
> >
> > On Thu, May 12, 2016 at 7:14 PM, Alexei Scherbakov <
> > [hidden email]> wrote:
> >
> >> Hi,
> >>
> >> I was not able to reproduce your case.
> >> In my test I have correct old value on eviction event.
> >> Please provide a reproducer.
> >>
> >> BTW: what are you trying to accomplish? Generally events are not very
> >> good for cluster performance and may not be delivered in case of the
> >> listener node failure.
> >>
> >> 2016-05-10 9:26 GMT+03:00 abraham <[hidden email]>:
> >>
> >>> Hi,
> >>>
> >>> I am re-posting an earlier message to which I did not get any replies
> >>> because I was not subscribed to the mailing list:
> >>>
> >>> I am trying to get the values from the eviction events. This works fine
> >>> with
> >>> the ONHEAP_TIERED version but not with OFFHEAP_VALUES and
> OFFHEAP_TIERED
> >>> -
> >>> in that cases the hasOldValue is true but the actual value is null.
> >>>
> >>> What we are trying to accomplish is to persist entries to a database
> only
> >>> when they either get removed, expired or evicted because the max cache
> >>> size
> >>> is reached and it looks like those events are the only way to
> accomplish
> >>> this.
> >>>
> >>> A quick glance at the code would suggest that in the
> >>> org.apache.ignite.internal.processors.cache.GridCacheEvictionManager
> one
> >>> could replace line 708 from
> >>>
> >>> CacheObject oldVal = recordable ? entry.rawGet() : null;
> >>>
> >>> to
> >>>
> >>> CacheObject oldVal = recordable ? entry.rawGetOrUnmarshal(false) :
> null;
> >>>
> >>> to get the values attached to the events. Would that work?
> >>>
> >>> Thanks,
> >>>
> >>> Abraham
> >>>
> >>>
> >>>
> >>> --
> >>> View this message in context:
> >>>
> http://apache-ignite-users.70518.x6.nabble.com/Eviction-Events-with-offheap-values-tp4853.html
> >>> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
> >>>
> >>
> >>
> >>
> >> --
> >>
> >> Best regards,
> >> Alexei Scherbakov
> >>
> >
> >
> >
> > --
> > Andrey Gura
> > GridGain Systems, Inc.
> > www.gridgain.com
> >
>
>
>
> --
>
> Best regards,
> Alexei Scherbakov
>



--
Andrey Gura
GridGain Systems, Inc.
www.gridgain.com
Reply | Threaded
Open this post in threaded view
|

Re: Eviction Events with offheap values

dsetrakyan
Andrey, I think there should be an eviction event fired, no? Can you please
file a ticket on it?

Thanks,
D.

On Wed, May 18, 2016 at 10:16 AM, Andrey Gura <[hidden email]> wrote:

> As I can see from GridCacheSwapManager code Ignite doesn't fire eviction
> events from offheap.
>
> On offheap evict GridCacheSwapManager does teh following:
>
> 1. Updates onOffheapEvict metric if enabled
> 2. Fires EVT_CACHE_OBJECT_SWAPPED event if swap enabled.
>
> On Tue, May 17, 2016 at 3:44 AM, Dmitriy Setrakyan <[hidden email]>
> wrote:
>
> > Guys,
> >
> > Resending this question to the dev list. Doesn’t Ignite fire an eviction
> > event whenever an entry is evicted from off-heap memory?
> >
> > D.
> >
> > ---------- Forwarded message ----------
> > From: Alexei Scherbakov <[hidden email]>
> > Date: Mon, May 16, 2016 at 1:33 AM
> > Subject: Re: Eviction Events with offheap values
> > To: [hidden email]
> >
> >
> > Andrey, thanks for the clarification.
> >
> > Abraham, it seems EvictionPolicy is not appropriate solution for your
> case.
> > BTW, why user session expiration logic is related to cache size ?
> > In case user sessions expire by timeout the more appropriate solution
> would
> > be listening to
> > EVT_CACHE_OBJECT_EXPIRED event.
> > You can also set eager expiration by calling
> > CacheConfiguration.setEagerTtl(true)
> > to make Ignite expire values automatically.
> >
> > Did this help?
> >
> >
> > 2016-05-13 19:49 GMT+03:00 Andrey Gura <[hidden email]>:
> >
> > > Alexei, Abraham,
> > >
> > > Eviction policy configuration doesn't make sense for OFFHEAP_TIERED
> mode.
> > > Eviction policy works only for on heap entries in order to evict
> entries
> > to
> > > offheap.
> > >
> > > For eviction of entries from offheap memory Ignite internaly uses other
> > > LRU eviction policy and there is no way to change this behaviour via
> > > configuration.
> > >
> > > On Thu, May 12, 2016 at 7:14 PM, Alexei Scherbakov <
> > > [hidden email]> wrote:
> > >
> > >> Hi,
> > >>
> > >> I was not able to reproduce your case.
> > >> In my test I have correct old value on eviction event.
> > >> Please provide a reproducer.
> > >>
> > >> BTW: what are you trying to accomplish? Generally events are not very
> > >> good for cluster performance and may not be delivered in case of the
> > >> listener node failure.
> > >>
> > >> 2016-05-10 9:26 GMT+03:00 abraham <[hidden email]>:
> > >>
> > >>> Hi,
> > >>>
> > >>> I am re-posting an earlier message to which I did not get any replies
> > >>> because I was not subscribed to the mailing list:
> > >>>
> > >>> I am trying to get the values from the eviction events. This works
> fine
> > >>> with
> > >>> the ONHEAP_TIERED version but not with OFFHEAP_VALUES and
> > OFFHEAP_TIERED
> > >>> -
> > >>> in that cases the hasOldValue is true but the actual value is null.
> > >>>
> > >>> What we are trying to accomplish is to persist entries to a database
> > only
> > >>> when they either get removed, expired or evicted because the max
> cache
> > >>> size
> > >>> is reached and it looks like those events are the only way to
> > accomplish
> > >>> this.
> > >>>
> > >>> A quick glance at the code would suggest that in the
> > >>> org.apache.ignite.internal.processors.cache.GridCacheEvictionManager
> > one
> > >>> could replace line 708 from
> > >>>
> > >>> CacheObject oldVal = recordable ? entry.rawGet() : null;
> > >>>
> > >>> to
> > >>>
> > >>> CacheObject oldVal = recordable ? entry.rawGetOrUnmarshal(false) :
> > null;
> > >>>
> > >>> to get the values attached to the events. Would that work?
> > >>>
> > >>> Thanks,
> > >>>
> > >>> Abraham
> > >>>
> > >>>
> > >>>
> > >>> --
> > >>> View this message in context:
> > >>>
> >
> http://apache-ignite-users.70518.x6.nabble.com/Eviction-Events-with-offheap-values-tp4853.html
> > >>> Sent from the Apache Ignite Users mailing list archive at Nabble.com.
> > >>>
> > >>
> > >>
> > >>
> > >> --
> > >>
> > >> Best regards,
> > >> Alexei Scherbakov
> > >>
> > >
> > >
> > >
> > > --
> > > Andrey Gura
> > > GridGain Systems, Inc.
> > > www.gridgain.com
> > >
> >
> >
> >
> > --
> >
> > Best regards,
> > Alexei Scherbakov
> >
>
>
>
> --
> Andrey Gura
> GridGain Systems, Inc.
> www.gridgain.com
>
Reply | Threaded
Open this post in threaded view
|

Re: Eviction Events with offheap values

Andrey Gura
I don't think that evicition from offheap to swap should fire
EVT_CACHE_OBJECT_EXPIRED event because it will indistinguishable from
normal eviction event.

On Fri, May 20, 2016 at 3:06 AM, Dmitriy Setrakyan <[hidden email]>
wrote:

> Andrey, I think there should be an eviction event fired, no? Can you please
> file a ticket on it?
>
> Thanks,
> D.
>
> On Wed, May 18, 2016 at 10:16 AM, Andrey Gura <[hidden email]> wrote:
>
> > As I can see from GridCacheSwapManager code Ignite doesn't fire eviction
> > events from offheap.
> >
> > On offheap evict GridCacheSwapManager does teh following:
> >
> > 1. Updates onOffheapEvict metric if enabled
> > 2. Fires EVT_CACHE_OBJECT_SWAPPED event if swap enabled.
> >
> > On Tue, May 17, 2016 at 3:44 AM, Dmitriy Setrakyan <
> [hidden email]>
> > wrote:
> >
> > > Guys,
> > >
> > > Resending this question to the dev list. Doesn’t Ignite fire an
> eviction
> > > event whenever an entry is evicted from off-heap memory?
> > >
> > > D.
> > >
> > > ---------- Forwarded message ----------
> > > From: Alexei Scherbakov <[hidden email]>
> > > Date: Mon, May 16, 2016 at 1:33 AM
> > > Subject: Re: Eviction Events with offheap values
> > > To: [hidden email]
> > >
> > >
> > > Andrey, thanks for the clarification.
> > >
> > > Abraham, it seems EvictionPolicy is not appropriate solution for your
> > case.
> > > BTW, why user session expiration logic is related to cache size ?
> > > In case user sessions expire by timeout the more appropriate solution
> > would
> > > be listening to
> > > EVT_CACHE_OBJECT_EXPIRED event.
> > > You can also set eager expiration by calling
> > > CacheConfiguration.setEagerTtl(true)
> > > to make Ignite expire values automatically.
> > >
> > > Did this help?
> > >
> > >
> > > 2016-05-13 19:49 GMT+03:00 Andrey Gura <[hidden email]>:
> > >
> > > > Alexei, Abraham,
> > > >
> > > > Eviction policy configuration doesn't make sense for OFFHEAP_TIERED
> > mode.
> > > > Eviction policy works only for on heap entries in order to evict
> > entries
> > > to
> > > > offheap.
> > > >
> > > > For eviction of entries from offheap memory Ignite internaly uses
> other
> > > > LRU eviction policy and there is no way to change this behaviour via
> > > > configuration.
> > > >
> > > > On Thu, May 12, 2016 at 7:14 PM, Alexei Scherbakov <
> > > > [hidden email]> wrote:
> > > >
> > > >> Hi,
> > > >>
> > > >> I was not able to reproduce your case.
> > > >> In my test I have correct old value on eviction event.
> > > >> Please provide a reproducer.
> > > >>
> > > >> BTW: what are you trying to accomplish? Generally events are not
> very
> > > >> good for cluster performance and may not be delivered in case of the
> > > >> listener node failure.
> > > >>
> > > >> 2016-05-10 9:26 GMT+03:00 abraham <[hidden email]>:
> > > >>
> > > >>> Hi,
> > > >>>
> > > >>> I am re-posting an earlier message to which I did not get any
> replies
> > > >>> because I was not subscribed to the mailing list:
> > > >>>
> > > >>> I am trying to get the values from the eviction events. This works
> > fine
> > > >>> with
> > > >>> the ONHEAP_TIERED version but not with OFFHEAP_VALUES and
> > > OFFHEAP_TIERED
> > > >>> -
> > > >>> in that cases the hasOldValue is true but the actual value is null.
> > > >>>
> > > >>> What we are trying to accomplish is to persist entries to a
> database
> > > only
> > > >>> when they either get removed, expired or evicted because the max
> > cache
> > > >>> size
> > > >>> is reached and it looks like those events are the only way to
> > > accomplish
> > > >>> this.
> > > >>>
> > > >>> A quick glance at the code would suggest that in the
> > > >>>
> org.apache.ignite.internal.processors.cache.GridCacheEvictionManager
> > > one
> > > >>> could replace line 708 from
> > > >>>
> > > >>> CacheObject oldVal = recordable ? entry.rawGet() : null;
> > > >>>
> > > >>> to
> > > >>>
> > > >>> CacheObject oldVal = recordable ? entry.rawGetOrUnmarshal(false) :
> > > null;
> > > >>>
> > > >>> to get the values attached to the events. Would that work?
> > > >>>
> > > >>> Thanks,
> > > >>>
> > > >>> Abraham
> > > >>>
> > > >>>
> > > >>>
> > > >>> --
> > > >>> View this message in context:
> > > >>>
> > >
> >
> http://apache-ignite-users.70518.x6.nabble.com/Eviction-Events-with-offheap-values-tp4853.html
> > > >>> Sent from the Apache Ignite Users mailing list archive at
> Nabble.com.
> > > >>>
> > > >>
> > > >>
> > > >>
> > > >> --
> > > >>
> > > >> Best regards,
> > > >> Alexei Scherbakov
> > > >>
> > > >
> > > >
> > > >
> > > > --
> > > > Andrey Gura
> > > > GridGain Systems, Inc.
> > > > www.gridgain.com
> > > >
> > >
> > >
> > >
> > > --
> > >
> > > Best regards,
> > > Alexei Scherbakov
> > >
> >
> >
> >
> > --
> > Andrey Gura
> > GridGain Systems, Inc.
> > www.gridgain.com
> >
>



--
Andrey Gura
GridGain Systems, Inc.
www.gridgain.com