remove cache on high-speed

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

remove cache on high-speed

This post has NOT been accepted by the mailing list yet.
hi
In multiple cluster nodes environment

I removed the cache on high-speed (1 ms),

Then killed one of the cluster nodes(server), and then node(server) launch again

Several caches are not deleted survives again
and retain cache in cacheMetricsMxBean of visualvm

ignite have any problems ?

code -------------------

cache.remove(key);
cache.clear(key);
vkulichenko vkulichenko
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

Hi,

Can you please properly subscribe to the mailing list so that community receives email notifications? Follow the instructions here: http://apache-ignite-users.70518.x6.nabble.com/mailing_list/MailingListOptions.jtp?forum=1

wychoi wrote
hi
In multiple cluster nodes environment

I removed the cache on high-speed (1 ms),

Then killed one of the cluster nodes(server), and then node(server) launch again

Several caches are not deleted survives again
and retain cache in cacheMetricsMxBean of visualvm

ignite have any problems ?

code -------------------

cache.remove(key);
cache.clear(key);
I'm not sure I understand what you're trying to achieve. First of all, it doesn't make much sense to do remove operation and then clear for the same key, because entry is already removed by the first one. Actually, these methods have much in common and both remove the entry from the cache. The difference is that remove() is additionally enlisted in the transaction (if there is any) and also delegates to the persistence store.

Can you please describe your use case? Also what metric on MX bean are you looking at?

-Val
wychoi wychoi
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

CacheConfiguration<AffinityKey, XObject> cfg = new CacheConfiguration<>("CACHE_NAME");
cfg.setIndexedTypes(AffinityKey.class, XObject.class);
cfg.setCacheMode(CacheMode.PARTITIONED);
cfg.setName("CACHE_NAME");
cfg5.setBackups(1);

ignite.getOrCreateCache(cfg);


1. i used the above cache Configuration .
2. put message of 50,000 counts  in cache.
3. remove cache  300 counts per one second
4. All caches have been controlled. (cache -scan -c=CACHE_NAME) : confirm empty
5. However, if we stop and restart the server node after
6. Some of the cache survives again.


in conclusion , Perhaps it is estimated that the remote node's cache cleanup unsafe.
Denis Magda Denis Magda
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

Hi,

Do you mean that after the whole cache clearing (no entities left at
all) and ongoing restart of some server node you see that some entities
got resurrected?

If this is your case then please provide us with a reproducible example.

Regards,
Denis

On 11/24/2015 6:02 AM, wychoi wrote:

> CacheConfiguration<AffinityKey, XObject> cfg = new
> CacheConfiguration<>("CACHE_NAME");
> cfg.setIndexedTypes(AffinityKey.class, XObject.class);
> cfg.setCacheMode(CacheMode.PARTITIONED);
> cfg.setName("CACHE_NAME");
> cfg5.setBackups(1);
>
> ignite.getOrCreateCache(cfg);
>
>
> 1. i used the above cache Configuration .
> 2. put message of 50,000 counts  in cache.
> 3. remove cache  300 counts per one second
> 4. All caches have been controlled. (cache -scan -c=CACHE_NAME) : confirm
> empty
> 5. However, if we stop and restart the server node after
> 6. Some of the cache survives again.
>
>
> in conclusion , Perhaps it is estimated that the remote node's cache cleanup
> unsafe.
>
>
>
> --
> View this message in context: http://apache-ignite-users.70518.x6.nabble.com/remove-cache-on-high-speed-tp2039p2042.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.

wychoi wychoi
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

hi
ongoing stop/start of some server node after the whole cache clearing
All caches have been removed. (cache -scan -c=CACHE_NAME) : confirm empty

But remain few cache in cacheMetricsMxBean of visualvm

Then i see that some entities got resurrected

this is code snipet

        public boolean remove(String cacheName, Long key, Integer part) throws IgniteException {

                Ignite ignite = Ignition.ignite();

                AffinityKey affKey = new AffinityKey(key, part);

                IgniteCache<AffinityKey, XObject> cache = ignite.cache(cacheName);
               
                result = cache.remove(affKey);
               
                cache.clear(affKey);

                return result;
        }
Denis Magda Denis Magda
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

Please make sure that "cache.size(CachePeek.ALL)" returns 0 when you
consider that the cache is empty.

I have a feeling that your logic has not removed something. Use
"cache.iterator()" to find the entries that are not removed.

BTW, there is no need to call "cache.remove()" and "cache.clear()" right
after that. Just use one method.

--
Denis

On 11/24/2015 10:34 AM, wychoi wrote:

> hi
> ongoing stop/start of some server node after the whole cache clearing
> All caches have been removed. (cache -scan -c=CACHE_NAME) : confirm empty
>
> But remain few cache in cacheMetricsMxBean of visualvm
>
> Then i see that some entities got resurrected
>
> this is code snipet
>
> public boolean remove(String cacheName, Long key, Integer part) throws
> IgniteException {
>
> Ignite ignite = Ignition.ignite();
>
> AffinityKey affKey = new AffinityKey(key, part);
>
> IgniteCache<AffinityKey, XObject> cache = ignite.cache(cacheName);
>
> result = cache.remove(affKey);
>
> cache.clear(affKey);
>
> return result;
> }
>
>
>
> --
> View this message in context: http://apache-ignite-users.70518.x6.nabble.com/remove-cache-on-high-speed-tp2039p2044.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.

wychoi wychoi
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

I have applied cache.remove() only

confirm  cache.size(CachePeekMode.ALL);   ==> 0

but a few cache revive

I use ContinuousQuery for getting cache
Is there relationship because using the Continuous Query?


ContinuousQuery<AffinityKey, XObject> query = new ContinuousQuery<>();
query.setLocal(true);
query.setTimeInterval(300);
query.setPageSize(512);

SqlQuery sqlQuery = new SqlQuery<AffinityKey, XObject>(XObject.class, "sequence > 1");
sqlQuery.setLocal(true);
sqlQuery.setPageSize(512);

query.setInitialQuery(sqlQuery);

query.setLocalListener(new CacheEntryUpdatedListener<AffinityKey, XObject>() {
        @Override
        public void onUpdated(Iterable<CacheEntryEvent<? extends AffinityKey, ? extends XObject>> events) {
               
                for (CacheEntryEvent<? extends AffinityKey, ? extends XObject> entry : events) {
                               
                        Long key = (Long)entry.getKey().key();
                        int part =  (int)entry.getKey().affinityKey();
                        XObject wrap = entry.getValue();
                        // put data for other source
                }
        }
}

QueryCursor<Cache.Entry<AffinityKey, XObject>> cur = cache.query(query);
for (Cache.Entry<AffinityKey, XObject> entry : cur) {

        Long key = (Long) entry.getKey().key();
        int part =  (int)entry.getKey().affinityKey();
        XObject wrap = entry.getValue();
        // put data for other source
       
}
Denis Magda Denis Magda
Reply | Threaded
Open this post in threaded view
|

Re: remove cache on high-speed

Hi,

I'm a bit confuse. You say that cache.size() evaluates to 0 but how do
you find out that there are some entries left in the cache?
Sorry, if I didn't get this from your latest responses.

In any case I don't think continuous queries influences on what you're
observing.
To make things easier please provide a complete example that we can run
on our side. You can share it over GitHub or some other way.

--
Denis

On 11/25/2015 12:03 PM, wychoi wrote:

> I have applied cache.remove() only
>
> confirm  cache.size(CachePeekMode.ALL);   ==> 0
>
> but a few cache revive
>
> I use ContinuousQuery for getting cache
> Is there relationship because using the Continuous Query?
>
>
> ContinuousQuery<AffinityKey, XObject> query = new ContinuousQuery<>();
> query.setLocal(true);
> query.setTimeInterval(300);
> query.setPageSize(512);
>
> SqlQuery sqlQuery = new SqlQuery<AffinityKey, XObject>(XObject.class,
> "sequence > 1");
> sqlQuery.setLocal(true);
> sqlQuery.setPageSize(512);
>
> query.setInitialQuery(sqlQuery);
>
> query.setLocalListener(new CacheEntryUpdatedListener<AffinityKey, XObject>()
> {
> @Override
> public void onUpdated(Iterable<CacheEntryEvent&lt;? extends AffinityKey, ?
> extends XObject>> events) {
>
> for (CacheEntryEvent<? extends AffinityKey, ? extends XObject> entry :
> events) {
>
> Long key = (Long)entry.getKey().key();
> int part =  (int)entry.getKey().affinityKey();
> XObject wrap = entry.getValue();
> // put data for other source
> }
> }
> }
>
> QueryCursor<Cache.Entry&lt;AffinityKey, XObject>> cur = cache.query(query);
> for (Cache.Entry<AffinityKey, XObject> entry : cur) {
>
> Long key = (Long) entry.getKey().key();
> int part =  (int)entry.getKey().affinityKey();
> XObject wrap = entry.getValue();
> // put data for other source
>
> }
>
>
>
> --
> View this message in context: http://apache-ignite-users.70518.x6.nabble.com/remove-cache-on-high-speed-tp2039p2055.html
> Sent from the Apache Ignite Users mailing list archive at Nabble.com.