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/05/27 15:28:47 UTC
incubator-ignite git commit: ignite-937 RandomEvictionPolicy
calculates cache size incorrectly
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-937 [created] e27fd2b58
ignite-937 RandomEvictionPolicy calculates cache size incorrectly
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e27fd2b5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e27fd2b5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e27fd2b5
Branch: refs/heads/ignite-937
Commit: e27fd2b58e540c3b6c42d2e602ba31df6675b097
Parents: 3a84c4b
Author: agura <ag...@gridgain.com>
Authored: Wed May 27 16:28:02 2015 +0300
Committer: agura <ag...@gridgain.com>
Committed: Wed May 27 16:28:02 2015 +0300
----------------------------------------------------------------------
.../ignite/cache/eviction/random/RandomEvictionPolicy.java | 9 +++++----
.../random/RandomEvictionPolicyCacheSizeSelfTest.java | 6 ++++++
2 files changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e27fd2b5/modules/core/src/main/java/org/apache/ignite/cache/eviction/random/RandomEvictionPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/eviction/random/RandomEvictionPolicy.java b/modules/core/src/main/java/org/apache/ignite/cache/eviction/random/RandomEvictionPolicy.java
index c88b31d..df82612 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/eviction/random/RandomEvictionPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/eviction/random/RandomEvictionPolicy.java
@@ -18,6 +18,7 @@
package org.apache.ignite.cache.eviction.random;
import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
import org.apache.ignite.cache.eviction.*;
import org.apache.ignite.configuration.*;
import org.apache.ignite.internal.util.typedef.internal.*;
@@ -87,13 +88,13 @@ public class RandomEvictionPolicy<K, V> implements EvictionPolicy<K, V>, RandomE
IgniteCache<K, V> cache = entry.unwrap(IgniteCache.class);
- int size = cache.size();
+ int size = cache.localSize(CachePeekMode.ONHEAP);
- for (int i = max; i < size; i++) {
+ for (int i = max; i < size;) {
Cache.Entry<K, V> e = cache.randomEntry();
- if (e != null)
- e.unwrap(EvictableEntry.class).evict();
+ if (e != null && e.unwrap(EvictableEntry.class).evict())
+ i++;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e27fd2b5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/random/RandomEvictionPolicyCacheSizeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/random/RandomEvictionPolicyCacheSizeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/random/RandomEvictionPolicyCacheSizeSelfTest.java
index e9e7228..2a2004e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/random/RandomEvictionPolicyCacheSizeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/eviction/random/RandomEvictionPolicyCacheSizeSelfTest.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.processors.cache.eviction.random;
import org.apache.ignite.*;
+import org.apache.ignite.cache.*;
import org.apache.ignite.cache.eviction.random.*;
import org.apache.ignite.configuration.*;
import org.apache.ignite.testframework.junits.common.*;
@@ -50,6 +51,7 @@ public class RandomEvictionPolicyCacheSizeSelfTest extends GridCommonAbstractTes
IgniteConfiguration cfg = super.getConfiguration(gridName);
CacheConfiguration ccfg = defaultCacheConfiguration();
+ ccfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
ccfg.setNearConfiguration(null);
ccfg.setEvictionPolicy(new RandomEvictionPolicy(PLC_MAX_SIZE));
@@ -67,6 +69,10 @@ public class RandomEvictionPolicyCacheSizeSelfTest extends GridCommonAbstractTes
for (int i = 0; i < KEYS_CNT; i++)
cache.put(i, i);
+ // Ensure that all entries accessed without data races and cache size will correct
+ for (int i = 0; i < KEYS_CNT; i++)
+ cache.get(i);
+
assertEquals(PLC_MAX_SIZE * GRID_CNT, cache.size());
}
}