i-485 review
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/fef22b6e Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/fef22b6e Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/fef22b6e Branch: refs/heads/ignite-446 Commit: fef22b6eb646624008ef4d54e6e4d6a3e41b54c0 Parents: 0bd101c Author: Yakov Zhdanov <yzhda...@gridgain.com> Authored: Fri Apr 17 19:06:09 2015 +0300 Committer: Yakov Zhdanov <yzhda...@gridgain.com> Committed: Fri Apr 17 19:06:09 2015 +0300 ---------------------------------------------------------------------- .../cache/eviction/fifo/FifoEvictionPolicy.java | 5 ++- .../igfs/IgfsPerBlockLruEvictionPolicy.java | 3 +- .../cache/eviction/lru/LruEvictionPolicy.java | 5 ++- .../eviction/sorted/SortedEvictionPolicy.java | 35 ++++++-------------- 4 files changed, 17 insertions(+), 31 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fef22b6e/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java index ca3cc1b..375e955 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/fifo/FifoEvictionPolicy.java @@ -203,11 +203,10 @@ public class FifoEvictionPolicy<K, V> implements EvictionPolicy<K, V>, FifoEvict if (entry == null) break; - if (!entry.evict()) { - entry.removeMeta(); + Node<EvictableEntry<K, V>> meta = entry.removeMeta(); + if (meta != null && !entry.evict()) touch(entry); - } } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fef22b6e/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java index ff4aeea..f4d95df 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/igfs/IgfsPerBlockLruEvictionPolicy.java @@ -34,7 +34,8 @@ import java.util.regex.*; /** * IGFS eviction policy which evicts particular blocks. */ -public class IgfsPerBlockLruEvictionPolicy implements EvictionPolicy<IgfsBlockKey, byte[]>, IgfsPerBlockLruEvictionPolicyMXBean, Externalizable { +public class IgfsPerBlockLruEvictionPolicy implements EvictionPolicy<IgfsBlockKey, byte[]>, + IgfsPerBlockLruEvictionPolicyMXBean, Externalizable { /** */ private static final long serialVersionUID = 0L; http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fef22b6e/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java index 2ba3c41..309d577 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/lru/LruEvictionPolicy.java @@ -173,11 +173,10 @@ public class LruEvictionPolicy<K, V> implements EvictionPolicy<K, V>, LruEvictio if (entry == null) break; - if (!entry.evict()) { - entry.removeMeta(); + Node<EvictableEntry<K, V>> meta = entry.removeMeta(); + if (meta != null && !entry.evict()) touch(entry); - } } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fef22b6e/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java index b3f3119..0e2b610 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/sorted/SortedEvictionPolicy.java @@ -48,7 +48,7 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE private final AtomicLong orderCnt = new AtomicLong(); /** Backed sorted set. */ - private final GridConcurrentSkipListSetEx<Holder<K, V>> set; + private final GridConcurrentSkipListSetEx<K, V> set; /** * Constructs sorted eviction policy with all defaults. @@ -203,11 +203,8 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE EvictableEntry<K, V> entry = h.entry; - if (h.order > 0 && !entry.evict()) { - entry.removeMeta(); - + if (h.order > 0 && entry.removeMeta(h) && !entry.evict()) touch(entry); - } } } } @@ -319,7 +316,7 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE EvictableEntry<K, V> e1 = h1.entry; EvictableEntry<K, V> e2 = h2.entry; - int cmp = ((Comparable<K>) e1.getKey()).compareTo(e2.getKey()); + int cmp = ((Comparable<K>)e1.getKey()).compareTo(e2.getKey()); return cmp == 0 ? Long.compare(abs(h1.order), abs(h2.order)) : cmp; } @@ -334,7 +331,7 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE * <li>{@code #clone()}</li> * <ul/> */ - private static class GridConcurrentSkipListSetEx<E> extends GridConcurrentSkipListSet<E> { + private static class GridConcurrentSkipListSetEx<K, V> extends GridConcurrentSkipListSet<Holder<K, V>> { /** */ private static final long serialVersionUID = 0L; @@ -344,7 +341,7 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE /** * @param comp Comparator. */ - public GridConcurrentSkipListSetEx(Comparator<? super E> comp) { + public GridConcurrentSkipListSetEx(Comparator<? super Holder<K, V>> comp) { super(comp); } @@ -356,11 +353,12 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE } /** {@inheritDoc} */ - @Override public boolean add(E e) { + @Override public boolean add(Holder<K, V> e) { boolean res = super.add(e); - if (res) - size.increment(); + assert res; + + size.increment(); return res; } @@ -376,24 +374,13 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE } /** {@inheritDoc} */ - @Nullable @Override public E pollFirst() { - E e = super.pollFirst(); + @Nullable @Override public Holder<K, V> pollFirst() { + Holder<K, V> e = super.pollFirst(); if (e != null) size.decrement(); return e; } - - /** {@inheritDoc} */ - @Override public GridConcurrentSkipListSetEx<E> clone() { - GridConcurrentSkipListSetEx<E> clone = (GridConcurrentSkipListSetEx<E>)super.clone(); - - clone.size = new LongAdder8(); - - clone.size.add(size.intValue()); - - return clone; - } } }