Repository: ignite Updated Branches: refs/heads/ignite-5075 f1128f859 -> fffba0d63
ignite-5075 Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/fffba0d6 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/fffba0d6 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/fffba0d6 Branch: refs/heads/ignite-5075 Commit: fffba0d63c3ba524cc332171593512efc5574710 Parents: f1128f8 Author: sboikov <[email protected]> Authored: Wed May 10 16:29:03 2017 +0300 Committer: sboikov <[email protected]> Committed: Wed May 10 18:06:56 2017 +0300 ---------------------------------------------------------------------- .../cache/CacheGroupInfrastructure.java | 12 ++- .../processors/cache/CacheMetricsImpl.java | 10 ++- .../processors/cache/GridCacheAdapter.java | 5 +- .../cache/IgniteCacheOffheapManager.java | 11 ++- .../cache/IgniteCacheOffheapManagerImpl.java | 92 ++++++++++++++++---- .../cache/database/CacheDataRowAdapter.java | 3 +- .../GridDistributedCacheAdapter.java | 4 +- .../distributed/dht/GridDhtCacheAdapter.java | 4 +- .../distributed/dht/GridDhtCacheEntry.java | 4 +- .../distributed/dht/GridDhtLocalPartition.java | 2 +- .../dht/GridDhtPartitionTopologyImpl.java | 2 +- .../dht/atomic/GridDhtAtomicCacheEntry.java | 6 -- .../colocated/GridDhtColocatedCacheEntry.java | 5 -- .../dht/preloader/GridDhtPartitionDemander.java | 3 +- .../dht/preloader/GridDhtPartitionSupplier.java | 1 + .../processors/cache/local/GridLocalCache.java | 2 +- .../visor/cache/VisorCachePartitionsTask.java | 2 +- .../cache/CacheDeferredDeleteQueueTest.java | 2 +- ...cheDhtLocalPartitionAfterRemoveSelfTest.java | 2 +- .../processors/cache/IgniteCacheGroupsTest.java | 63 ++++++++++++-- .../cache/IgniteCachePeekModesAbstractTest.java | 2 +- 21 files changed, 173 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java index 786335c..e1e3e93 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupInfrastructure.java @@ -21,6 +21,7 @@ import java.util.UUID; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; import org.apache.ignite.configuration.CacheConfiguration; +import org.apache.ignite.configuration.DataPageEvictionMode; import org.apache.ignite.internal.IgniteClientDisconnectedCheckedException; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.processors.affinity.AffinityAssignment; @@ -104,6 +105,9 @@ public class CacheGroupInfrastructure { /** */ private boolean depEnabled; + /** */ + private boolean storeCacheId; + /** * @param grpId Group ID. * @param ctx Context. @@ -139,9 +143,15 @@ public class CacheGroupInfrastructure { depEnabled = ctx.kernalContext().deploy().enabled() && !ctx.kernalContext().cacheObjects().isBinaryEnabled(ccfg); + storeCacheId = sharedGroup() || memPlc.config().getPageEvictionMode() != DataPageEvictionMode.DISABLED; + log = ctx.kernalContext().log(getClass()); } + public boolean storeCacheId() { + return storeCacheId; + } + /** * @return {@code True} if deployment is enabled. */ @@ -244,7 +254,7 @@ public class CacheGroupInfrastructure { public boolean allowFastEviction() { // TODO IGNITE-5075 see GridCacheContext#allowFastEviction - return true; + return false; } public AffinityTopologyVersion groupStartVersion() { http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java index d4ad8e4..c9ee641 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java @@ -195,7 +195,10 @@ public class CacheMetricsImpl implements CacheMetrics { /** {@inheritDoc} */ @Override public long getOffHeapPrimaryEntriesCount() { try { - return cctx.offheap().entriesCount(true, false, cctx.affinity().affinityTopologyVersion()); + return cctx.offheap().cacheEntriesCount(cctx.cacheId(), + true, + false, + cctx.affinity().affinityTopologyVersion()); } catch (IgniteCheckedException ignored) { return 0; @@ -205,7 +208,10 @@ public class CacheMetricsImpl implements CacheMetrics { /** {@inheritDoc} */ @Override public long getOffHeapBackupEntriesCount() { try { - return cctx.offheap().entriesCount(false, true, cctx.affinity().affinityTopologyVersion()); + return cctx.offheap().cacheEntriesCount(cctx.cacheId(), + false, + true, + cctx.affinity().affinityTopologyVersion()); } catch (IgniteCheckedException ignored) { return 0; http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/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 0d30ac8..650eefb 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 @@ -3927,7 +3927,10 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V try { IgniteCacheOffheapManager mgr = ctx.offheap(); - return mgr != null ? mgr.entriesCount(false, true, ctx.affinity().affinityTopologyVersion()) : -1; + return mgr != null ? mgr.cacheEntriesCount(ctx.cacheId(), + false, + true, + ctx.affinity().affinityTopologyVersion()) : -1; } catch (IgniteCheckedException ignore) { return 0; http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java index 64bc51c..4a464d8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java @@ -223,7 +223,7 @@ public interface IgniteCacheOffheapManager { * @return Entries count. * @throws IgniteCheckedException If failed. */ - public long entriesCount(boolean primary, boolean backup, AffinityTopologyVersion topVer) + public long cacheEntriesCount(int cacheId, boolean primary, boolean backup, AffinityTopologyVersion topVer) throws IgniteCheckedException; /** @@ -237,7 +237,7 @@ public interface IgniteCacheOffheapManager { * @param part Partition. * @return Number of entries in given partition. */ - public long entriesCount(int part); + public long cacheEntriesCount(int cacheId, int part); /** * @return Offheap allocated size. @@ -271,7 +271,7 @@ public interface IgniteCacheOffheapManager { * * @return Number of entries. */ - public long entriesCount(); + public long cacheEntriesCount(int cacheId); /** * @@ -304,9 +304,12 @@ public interface IgniteCacheOffheapManager { void init(long size, long updCntr); /** + * @param cacheId Cache ID. * @return Size. */ - int size(); + int cacheSize(int cacheId); + + int fullSize(); /** * @return Update counter. http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java index 8ddea9c..d70b34d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java @@ -214,14 +214,14 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager } /** {@inheritDoc} */ - @Override public long entriesCount() { + @Override public long cacheEntriesCount(int cacheId) { if (grp.isLocal()) - return locCacheDataStore.size(); + return locCacheDataStore.cacheSize(cacheId); long size = 0; for (CacheDataStore store : partDataStores.values()) - size += store.size(); + size += store.cacheSize(cacheId); return size; } @@ -241,13 +241,14 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager } /** {@inheritDoc} */ - @Override public long entriesCount( + @Override public long cacheEntriesCount( + int cacheId, boolean primary, boolean backup, AffinityTopologyVersion topVer ) throws IgniteCheckedException { if (grp.isLocal()) - return entriesCount(0); + return cacheEntriesCount(cacheId, 0); else { ClusterNode locNode = ctx.localNode(); @@ -259,7 +260,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager for (GridDhtLocalPartition locPart : grp.topology().currentLocalPartitions()) { if (primary) { if (primaryParts.contains(locPart.id())) { - cnt += locPart.dataStore().size(); + cnt += locPart.dataStore().cacheSize(cacheId); continue; } @@ -267,7 +268,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager if (backup) { if (backupParts.contains(locPart.id())) - cnt += locPart.dataStore().size(); + cnt += locPart.dataStore().cacheSize(cacheId); } } @@ -276,16 +277,16 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager } /** {@inheritDoc} */ - @Override public long entriesCount(int part) { + @Override public long cacheEntriesCount(int cacheId, int part) { if (grp.isLocal()) { assert part == 0; - return locCacheDataStore.size(); + return locCacheDataStore.cacheSize(cacheId); } else { GridDhtLocalPartition locPart = grp.topology().localPartition(part, AffinityTopologyVersion.NONE, false); - return locPart == null ? 0 : locPart.dataStore().size(); + return locPart == null ? 0 : locPart.dataStore().cacheSize(cacheId); } } @@ -847,7 +848,10 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager protected final AtomicLong cntr = new AtomicLong(); /** Partition size. */ - protected final AtomicLong storageSize = new AtomicLong(); + private final AtomicLong storageSize = new AtomicLong(); + + /** */ + private final ConcurrentMap<Integer, AtomicLong> cacheSizes = new ConcurrentHashMap<>(); /** Initialized update counter. */ protected Long initCntr = 0L; @@ -870,13 +874,65 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager this.dataTree = dataTree; } + /** + * @param cacheId Cache ID. + */ + void incrementSize(int cacheId) { + storageSize.incrementAndGet(); + + if (grp.sharedGroup()) { + AtomicLong size = cacheSizes.get(cacheId); + + if (size == null) { + AtomicLong old = cacheSizes.put(cacheId, size = new AtomicLong()); + + if (old != null) + size = old; + } + + size.incrementAndGet(); + } + } + + /** + * @param cacheId Cache ID. + */ + void decrementSize(int cacheId) { + storageSize.decrementAndGet(); + + if (grp.sharedGroup()) { + AtomicLong size = cacheSizes.get(cacheId); + + if (size == null) + return; + + AtomicLong old = cacheSizes.put(cacheId, size = new AtomicLong()); + + if (old != null) + size = old; + + size.decrementAndGet(); + } + } + /** {@inheritDoc} */ @Override public int partId() { return partId; } /** {@inheritDoc} */ - @Override public int size() { + @Override public int cacheSize(int cacheId) { + if (grp.sharedGroup()) { + AtomicLong size = cacheSizes.get(cacheId); + + return size != null ? (int)size.get() : 0; + } + + return (int)storageSize.get(); + } + + /** {@inheritDoc} */ + @Override public int fullSize() { return (int)storageSize.get(); } @@ -980,8 +1036,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager long expireTime, @Nullable CacheDataRow oldRow) throws IgniteCheckedException { - int cacheId = grp.memoryPolicy().config().getPageEvictionMode() == DataPageEvictionMode.DISABLED ? - 0 : cctx.cacheId(); + int cacheId = grp.storeCacheId() ? cctx.cacheId() : 0; DataRow dataRow = new DataRow(key, val, ver, partId, expireTime, cacheId); @@ -1016,8 +1071,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager throw new NodeStoppingException("Operation has been cancelled (node is stopping)."); try { - int cacheId = grp.memoryPolicy().config().getPageEvictionMode() != DataPageEvictionMode.DISABLED ? - cctx.cacheId() : 0; + int cacheId = grp.storeCacheId() ? cctx.cacheId() : 0; DataRow dataRow = new DataRow(key, val, ver, p, expireTime, cacheId); @@ -1063,7 +1117,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager private void finishUpdate(GridCacheContext cctx, CacheDataRow newRow, @Nullable CacheDataRow oldRow) throws IgniteCheckedException { if (oldRow == null) - storageSize.incrementAndGet(); + incrementSize(cctx.cacheId()); KeyCacheObject key = newRow.key(); @@ -1139,7 +1193,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager if (pendingEntries != null && oldRow.expireTime() != 0) pendingEntries.removex(new PendingRow(oldRow.expireTime(), oldRow.link())); - storageSize.decrementAndGet(); + decrementSize(cctx.cacheId()); val = oldRow.value(); @@ -1500,7 +1554,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager if (data.nextLink() == 0) { long addr = pageAddr + data.offset(); - if (grp.memoryPolicy().config().getPageEvictionMode() != DataPageEvictionMode.DISABLED) + if (grp.storeCacheId()) addr += 4; // Skip cache id. final int len = PageUtils.getInt(addr, 0); http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java index 0ce0a0e..f5abd78 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/CacheDataRowAdapter.java @@ -124,8 +124,7 @@ public class CacheDataRowAdapter implements CacheDataRow { CacheObjectContext coctx = null; if (grp != null) { - cacheId = grp.memoryPolicy().config().getPageEvictionMode() == DataPageEvictionMode.DISABLED ? - -1 : 0; // Force cacheId reading for evictable memory policies. + cacheId = !grp.storeCacheId() ? -1 : 0; // Skip cacheId reading if it is not needed. coctx = grp.cacheObjectContext(); } http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java index 096ca9f..5a72fb8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java @@ -279,7 +279,7 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter IgniteCacheOffheapManager offheap = ctx.offheap(); if (modes.offheap) - size += offheap.entriesCount(modes.primary, modes.backup, topVer); + size += offheap.cacheEntriesCount(ctx.cacheId(), modes.primary, modes.backup, topVer); else if (modes.heap) { for (GridDhtLocalPartition locPart : ctx.topology().currentLocalPartitions()) { if ((modes.primary && locPart.primary(topVer)) || (modes.backup && locPart.backup(topVer))) @@ -308,7 +308,7 @@ public abstract class GridDistributedCacheAdapter<K, V> extends GridCacheAdapter if (ctx.affinity().primaryByPartition(ctx.localNode(), partition, topVer) && modes.primary || ctx.affinity().backupByPartition(ctx.localNode(), partition, topVer) && modes.backup) - size += offheap.entriesCount(partition); + size += offheap.cacheEntriesCount(ctx.cacheId(), partition); } return size; http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java index 36b501b..0269d82 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheAdapter.java @@ -531,7 +531,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap long sum = 0; for (GridDhtLocalPartition p : topology().currentLocalPartitions()) - sum += p.dataStore().size(); + sum += p.dataStore().cacheSize(ctx.cacheId()); return sum; } @@ -549,7 +549,7 @@ public abstract class GridDhtCacheAdapter<K, V> extends GridDistributedCacheAdap for (GridDhtLocalPartition p : topology().currentLocalPartitions()) { if (p.primary(topVer)) - sum += p.dataStore().size(); + sum += p.dataStore().cacheSize(ctx.cacheId()); } return sum; http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java index 4c22090..660d5b5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java @@ -719,8 +719,8 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry { /** * @return Cache name. */ - protected String cacheName() { - return cctx.dht().near().name(); + protected final String cacheName() { + return cctx.name(); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java index 62fe24f..53c4939 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLocalPartition.java @@ -250,7 +250,7 @@ public class GridDhtLocalPartition extends GridCacheConcurrentMapImpl implements if (grp.allowFastEviction()) return size() == 0; - return store.size() == 0 && size() == 0; + return store.fullSize() == 0 && size() == 0; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java index e942b5b..b76f548 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java @@ -1974,7 +1974,7 @@ public class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology { if (part == null) continue; - int size = part.dataStore().size(); + int size = part.dataStore().fullSize(); if (size >= threshold) X.println(">>> Local partition [part=" + part.id() + ", size=" + size + ']'); http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCacheEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCacheEntry.java index 3f014d5..d302fa0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCacheEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCacheEntry.java @@ -22,7 +22,6 @@ import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.GridCacheContext; import org.apache.ignite.internal.processors.cache.KeyCacheObject; import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry; -import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.S; /** @@ -47,11 +46,6 @@ public class GridDhtAtomicCacheEntry extends GridDhtCacheEntry { } /** {@inheritDoc} */ - @Override protected String cacheName() { - return CU.isNearEnabled(cctx) ? super.cacheName() : cctx.dht().name(); - } - - /** {@inheritDoc} */ @Override public synchronized String toString() { return S.toString(GridDhtAtomicCacheEntry.class, this, super.toString()); } http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCacheEntry.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCacheEntry.java index cc71e11..8a22c2b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCacheEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCacheEntry.java @@ -46,11 +46,6 @@ public class GridDhtColocatedCacheEntry extends GridDhtCacheEntry { } /** {@inheritDoc} */ - @Override protected String cacheName() { - return cctx.colocated().name(); - } - - /** {@inheritDoc} */ @Override public synchronized String toString() { return S.toString(GridDhtColocatedCacheEntry.class, this, super.toString()); } http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java index 89e0c72..8a3b1de 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionDemander.java @@ -751,8 +751,7 @@ public class GridDhtPartitionDemander { GridCacheEntryEx cached = null; try { - // TODO IGNITE-5075. - GridCacheContext cctx = grp.cacheContext(); + GridCacheContext cctx = grp.sharedGroup() ? ctx.cacheContext(entry.cacheId()) : grp.cacheContext(); cached = cctx.dht().entryEx(entry.key()); http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java index f82c111..0569689 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionSupplier.java @@ -356,6 +356,7 @@ class GridDhtPartitionSupplier { info.expireTime(row.expireTime()); info.version(row.version()); info.value(row.value()); + info.cacheId(row.cacheId()); if (preloadPred == null || preloadPred.apply(info)) s.addEntry0(part, info, grp.shared(), grp.cacheObjectContext()); http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java index d6b9fba..cf3fb6a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCache.java @@ -217,7 +217,7 @@ public class GridLocalCache<K, V> extends GridCacheAdapter<K, V> { modes.backup = true; if (modes.offheap) - return ctx.offheap().entriesCount(); + return ctx.offheap().cacheEntriesCount(ctx.cacheId()); else if (modes.heap) return size(); else http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCachePartitionsTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCachePartitionsTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCachePartitionsTask.java index 69188c5..af65de0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCachePartitionsTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCachePartitionsTask.java @@ -124,7 +124,7 @@ public class VisorCachePartitionsTask extends VisorMultiNodeTask<VisorCacheParti for (GridDhtLocalPartition part : locParts) { int p = part.id(); - long sz = part.dataStore().size(); + long sz = part.dataStore().cacheSize(ca.context().cacheId()); // Pass NONE as topology version in order not to wait for topology version. if (part.primary(AffinityTopologyVersion.NONE)) http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDeferredDeleteQueueTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDeferredDeleteQueueTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDeferredDeleteQueueTest.java index 65037d8..18a35c6 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDeferredDeleteQueueTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDeferredDeleteQueueTest.java @@ -116,7 +116,7 @@ public class CacheDeferredDeleteQueueTest extends GridCommonAbstractTest { for (GridDhtLocalPartition p : top.currentLocalPartitions()) { Collection<Object> rmvQueue = GridTestUtils.getFieldValue(p, "rmvQueue"); - if (!rmvQueue.isEmpty() || p.dataStore().size() != 0) + if (!rmvQueue.isEmpty() || p.dataStore().fullSize() != 0) return false; } } http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java index c060eb3..7263656 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheDhtLocalPartitionAfterRemoveSelfTest.java @@ -76,7 +76,7 @@ public class CacheDhtLocalPartitionAfterRemoveSelfTest extends GridCommonAbstrac cache = grid(g).cache(DEFAULT_CACHE_NAME); for (GridDhtLocalPartition p : dht(cache).topology().localPartitions()) { - int size = p.dataStore().size(); + int size = p.dataStore().fullSize(); assertTrue("Unexpected size: " + size, size <= 32); } http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java index 58e8722..ba01844 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsTest.java @@ -65,18 +65,59 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest { * @throws Exception If failed. */ public void testCreateCache1() throws Exception { - Ignite ignite = ignite(0); + Ignite srv0 = ignite(0); - IgniteCache<Object, Object> cache1 = ignite.createCache(cacheConfiguration("grp1", "cache1", ATOMIC)); - //IgniteCache<Object, Object> cache2 = ignite.createCache(cacheConfiguration("grp1", "cache2", ATOMIC)); + { + IgniteCache<Object, Object> cache1 = srv0.createCache(cacheConfiguration("grp1", "cache1", ATOMIC, 2)); + IgniteCache<Object, Object> cache2 = srv0.createCache(cacheConfiguration("grp1", "cache2", ATOMIC, 2)); - cache1.put(new Key1(1), 1); - assertEquals(1, cache1.get(new Key1(1))); + cache1.put(new Key1(1), 1); + assertEquals(1, cache1.get(new Key1(1))); - //assertFalse(cache2.iterator().hasNext()); + assertEquals(1, cache1.size()); + assertEquals(0, cache2.size()); + //assertFalse(cache2.iterator().hasNext()); -// cache2.put(new Key2(1), 2); -// assertEquals(2, cache2.get(new Key2(1))); + cache2.put(new Key2(1), 2); + assertEquals(2, cache2.get(new Key2(1))); + + assertEquals(1, cache1.size()); + assertEquals(1, cache2.size()); + } + + Ignite srv1 = startGrid(1); + + awaitPartitionMapExchange(); + + IgniteCache<Object, Object> cache1 = srv1.cache("cache1"); + IgniteCache<Object, Object> cache2 = srv1.cache("cache2"); + + assertEquals(1, cache1.localPeek(new Key1(1))); + assertEquals(2, cache2.localPeek(new Key2(1))); + + assertEquals(1, cache1.localSize()); + assertEquals(1, cache2.localSize()); + } + + /** + * @throws Exception If failed. + */ + public void testCreateCache2() throws Exception { + Ignite srv0 = ignite(0); + + { + IgniteCache<Object, Object> cache1 = srv0.createCache(cacheConfiguration("grp1", "cache1", ATOMIC, 0)); + IgniteCache<Object, Object> cache2 = srv0.createCache(cacheConfiguration("grp1", "cache2", ATOMIC, 0)); + + for (int i = 0; i < 10; i++) { + cache1.put(new Key1(i), 1); + cache2.put(new Key2(i), 2); + } + } + + Ignite srv1 = startGrid(1); + + awaitPartitionMapExchange(); } /** @@ -145,12 +186,16 @@ public class IgniteCacheGroupsTest extends GridCommonAbstractTest { } } - private CacheConfiguration cacheConfiguration(String grpName, String name, CacheAtomicityMode atomicityMode) { + private CacheConfiguration cacheConfiguration(String grpName, + String name, + CacheAtomicityMode atomicityMode, + int backups) { CacheConfiguration ccfg = new CacheConfiguration(); ccfg.setName(name); ccfg.setGroupName(grpName); ccfg.setAtomicityMode(atomicityMode); + ccfg.setBackups(backups); return ccfg; } http://git-wip-us.apache.org/repos/asf/ignite/blob/fffba0d6/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePeekModesAbstractTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePeekModesAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePeekModesAbstractTest.java index 81c0799..7725b19 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePeekModesAbstractTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePeekModesAbstractTest.java @@ -1022,7 +1022,7 @@ public abstract class IgniteCachePeekModesAbstractTest extends IgniteCacheAbstra // Swap and offheap are disabled for near cache. IgniteCacheOffheapManager offheapManager = ctx.isNear() ? ctx.near().dht().context().offheap() : ctx.offheap(); //First count entries... - int cnt = (int)offheapManager.entriesCount(part); + int cnt = (int)offheapManager.cacheEntriesCount(ctx.cacheId(), part); GridCacheAffinityManager affinity = ctx.affinity(); AffinityTopologyVersion topVer = affinity.affinityTopologyVersion();
