[infinispan-dev] Do we need bulk eviction notification?

"이희승 (Trustin Lee)" trustin at gmail.com
Thu Oct 14 07:20:15 EDT 2010


Current BoundedConcurrentHashMap notifies EvictionListener for every
evicted entry.  However, as you see from
BoundedConcurrentHashMap.Segment.attemptEviction(..), eviction often
happens in bulk.

If these evicted entries are supposed to be passivated, it is often
beneficial to begin a transaction because it often takes much less time
to call commit() less often.  If N entries are evicted:

without bulk eviction:

    store.store(e1); -- each store implied a commit()
    store.store(..);
    store.store(eN);

with bulk eviction:

    store.begin(mods(e1, ..., eN), tx, true);

so, what do you think about changing the EvictionListener interface like
this:

    interface EvictionListener<K, V> {
        void preEvict(K key);
        void postEvict(K key, V value);

        void preBulkEvict(Set<K> keys);
        void postBulkEvict(Map<K, V> entries);
    }

    abstract class AbstractEvictionListener<K, V>
            implements EvictionListener {
        void preBulkEvict(Set<K> keys) {
             for (K k: keys) { preEvict(k); }
        }
        void postBulkEvict(Set<K> keys) {
             ...
        }
    }

I might be missing something though.  Please let me know if there is a
way to achieve similar improvement without this modification.

-- 
Trustin Lee - http://gleamynode.net/


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 290 bytes
Desc: OpenPGP digital signature
Url : http://lists.jboss.org/pipermail/infinispan-dev/attachments/20101014/69932409/attachment.bin 


More information about the infinispan-dev mailing list