ignite-1817 Deprecate RandomEvictionPolicy and IgniteCache.randomEntry method - Fixes #191.
Signed-off-by: Alexey Goncharuk <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3de9d47a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3de9d47a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3de9d47a Branch: refs/heads/ignite-843-rc1 Commit: 3de9d47a88d2e13c4807e44e2c391549929d3c9d Parents: 5e36b26 Author: agura <[email protected]> Authored: Mon Nov 9 20:36:53 2015 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Mon Nov 9 20:36:53 2015 +0300 ---------------------------------------------------------------------- .../java/org/apache/ignite/IgniteCache.java | 1 + .../eviction/random/RandomEvictionPolicy.java | 4 ++++ .../processors/cache/GridCacheAdapter.java | 22 ++++++++++++++++---- .../processors/cache/IgniteCacheProxy.java | 6 ++++++ 4 files changed, 29 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/3de9d47a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java index 5558a26..6c4b507 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java @@ -104,6 +104,7 @@ public interface IgniteCache<K, V> extends javax.cache.Cache<K, V>, IgniteAsyncS * * @return Random entry, or {@code null} if cache is empty. */ + @Deprecated public Entry<K, V> randomEntry(); /** http://git-wip-us.apache.org/repos/asf/ignite/blob/3de9d47a/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 bf04d92..f77551d 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 @@ -39,7 +39,11 @@ import static org.apache.ignite.configuration.CacheConfiguration.DFLT_CACHE_SIZE * <p> * Random eviction will provide the best performance over any key queue in which every * key has the same probability of being accessed. + * + * @deprecated This eviction policy implementation doesn't support near cache + * and doesn't work on client nodes. Also it seems that random eviction doesn't make sense. */ +@Deprecated public class RandomEvictionPolicy<K, V> implements EvictionPolicy<K, V>, RandomEvictionPolicyMBean, Externalizable { /** */ private static final long serialVersionUID = 0L; http://git-wip-us.apache.org/repos/asf/ignite/blob/3de9d47a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java index 74951b5..419ccec 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java @@ -99,7 +99,6 @@ import org.apache.ignite.internal.processors.task.GridInternal; import org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException; import org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException; import org.apache.ignite.internal.util.F0; -import org.apache.ignite.internal.util.GridConcurrentHashSet; import org.apache.ignite.internal.util.GridLeanMap; import org.apache.ignite.internal.util.future.GridEmbeddedFuture; import org.apache.ignite.internal.util.future.GridFinishedFuture; @@ -122,7 +121,6 @@ import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.GPC; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.lang.IgniteBiInClosure; import org.apache.ignite.lang.IgniteBiPredicate; import org.apache.ignite.lang.IgniteBiTuple; import org.apache.ignite.lang.IgniteCallable; @@ -3526,10 +3524,26 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V /** * @return Random cache entry. */ + @Deprecated @Nullable public Cache.Entry<K, V> randomEntry() { - GridCacheMapEntry e = map.randomEntry(); + GridCacheMapEntry entry; - return e == null || e.obsolete() ? null : e.<K, V>wrapLazyValue(); + if (ctx.offheapTiered()) { + Iterator<Cache.Entry<K, V>> it; + + try { + it = ctx.swap().offheapIterator(true, true, ctx.affinity().affinityTopologyVersion()); + } + catch (IgniteCheckedException e) { + throw CU.convertToCacheException(e); + } + + return it.hasNext() ? it.next() : null; + } + else + entry = map.randomEntry(); + + return entry == null || entry.obsolete() ? null : entry.<K, V>wrapLazyValue(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/3de9d47a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java index c563e59..4b03bb9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java @@ -61,6 +61,7 @@ import org.apache.ignite.cluster.ClusterGroup; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.internal.AsyncSupportAdapter; +import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.IgniteEx; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.processors.cache.query.CacheQuery; @@ -276,6 +277,11 @@ public class IgniteCacheProxy<K, V> extends AsyncSupportAdapter<IgniteCache<K, V /** {@inheritDoc} */ @Nullable @Override public Cache.Entry<K, V> randomEntry() { + GridKernalContext kctx = ctx.kernalContext(); + + if (kctx.isDaemon() || kctx.clientNode()) + throw new UnsupportedOperationException("Not applicable for daemon or client node."); + GridCacheGateway<K, V> gate = this.gate; CacheOperationContext prev = onEnter(gate, opCtx);
