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();

Reply via email to