You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/07/07 15:46:43 UTC
[49/50] incubator-ignite git commit: ignite-1070 Zombie entries in
cache with SortedEvictionPolicy
ignite-1070 Zombie entries in cache with SortedEvictionPolicy
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/9d0aa6f1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/9d0aa6f1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/9d0aa6f1
Branch: refs/heads/ignite-1010
Commit: 9d0aa6f1244e13187b64dec81b8d33d94f3db2af
Parents: 44506c3
Author: agura <ag...@gridgain.com>
Authored: Tue Jul 7 14:49:13 2015 +0300
Committer: agura <ag...@gridgain.com>
Committed: Tue Jul 7 14:49:13 2015 +0300
----------------------------------------------------------------------
.../cache/eviction/fifo/FifoEvictionPolicy.java | 5 -----
.../cache/eviction/lru/LruEvictionPolicy.java | 5 -----
.../eviction/sorted/SortedEvictionPolicy.java | 19 +++++--------------
...cheConcurrentEvictionConsistencySelfTest.java | 15 +++++++++++++--
4 files changed, 18 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9d0aa6f1/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 221bc39..1e06ffd 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
@@ -216,11 +216,6 @@ public class FifoEvictionPolicy<K, V> implements EvictionPolicy<K, V>, FifoEvict
// If node was unlinked by concurrent shrink() call, we must repeat the whole cycle.
else if (!entry.removeMeta(node))
return false;
- else {
- memSize.add(-entry.size());
-
- return true;
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9d0aa6f1/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 0be26c8..ba6f88a 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
@@ -200,11 +200,6 @@ public class LruEvictionPolicy<K, V> implements EvictionPolicy<K, V>, LruEvictio
// If node was unlinked by concurrent shrink() call, we must repeat the whole cycle.
else if (!entry.removeMeta(node))
return false;
- else {
- memSize.add(-entry.size());
-
- return true;
- }
}
}
else if (queue.unlinkx(node)) {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9d0aa6f1/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 b8b82fa..d99b3b0 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
@@ -224,21 +224,17 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE
private boolean touch(EvictableEntry<K, V> entry) {
Holder<K, V> holder = entry.meta();
- // Entry has not been add yet to backed queue..
+ // Entry has not been added yet to backed queue.
if (holder == null) {
while (true) {
holder = new Holder<>(entry, orderCnt.incrementAndGet());
- set.add(holder);
+ if (entry.putMetaIfAbsent(holder) != null)
+ return false; // Set has not been changed.
- if (entry.putMetaIfAbsent(holder) != null) {
- // Was concurrently added, need to remove it from queue.
- removeHolder(holder);
+ set.add(holder);
- // Set has not been changed.
- return false;
- }
- else if (holder.order > 0) {
+ if (holder.order > 0) {
if (!entry.isCached()) {
// Was concurrently evicted, need to remove it from queue.
removeHolder(holder);
@@ -253,11 +249,6 @@ public class SortedEvictionPolicy<K, V> implements EvictionPolicy<K, V>, SortedE
// If holder was removed by concurrent shrink() call, we must repeat the whole cycle.
else if (!entry.removeMeta(holder))
return false;
- else {
- memSize.add(-entry.size());
-
- return true;
- }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9d0aa6f1/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/GridCacheConcurrentEvictionConsistencySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/GridCacheConcurrentEvictionConsistencySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/GridCacheConcurrentEvictionConsistencySelfTest.java
index 921422e..91e9ecc 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/GridCacheConcurrentEvictionConsistencySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/GridCacheConcurrentEvictionConsistencySelfTest.java
@@ -24,6 +24,7 @@ import org.apache.ignite.cache.eviction.lru.*;
import org.apache.ignite.cache.eviction.sorted.*;
import org.apache.ignite.configuration.*;
import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.processors.cache.*;
import org.apache.ignite.internal.util.typedef.internal.*;
import org.apache.ignite.spi.discovery.tcp.*;
import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
@@ -273,15 +274,25 @@ public class GridCacheConcurrentEvictionConsistencySelfTest extends GridCommonAb
info("Test results [threadCnt=" + threadCnt + ", iterCnt=" + ITERATION_CNT + ", cacheSize=" + cache.size() +
", internalQueueSize" + queue.size() + ", duration=" + (System.currentTimeMillis() - start) + ']');
+ boolean detached = false;
+
for (Cache.Entry<Integer, Integer> e : queue) {
Integer rmv = cache.getAndRemove(e.getKey());
- if (rmv == null)
- fail("Eviction policy contains key that is not present in cache: " + e);
+ CacheEvictableEntryImpl unwrapped = e.unwrap(CacheEvictableEntryImpl.class);
+
+ if (rmv == null && (unwrapped.meta() != null || unwrapped.isCached())) {
+ U.warn(log, "Detached entry: " + e);
+
+ detached = true;
+ }
else
info("Entry removed: " + rmv);
}
+ if (detached)
+ fail("Eviction policy contains keys that are not present in cache");
+
if (!(cache.localSize() == 0)) {
boolean zombies = false;