Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-45 24c6fed22 -> df5e6d36c


IGNITE-45 - Fixes from example runs. Added tests.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4c5e43b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4c5e43b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4c5e43b2

Branch: refs/heads/ignite-45
Commit: 4c5e43b238097d62f61911bb37a5f95f1a07a5eb
Parents: 3d209d7
Author: Alexey Goncharuk <agoncha...@gridgain.com>
Authored: Sat Mar 21 03:01:02 2015 -0700
Committer: Alexey Goncharuk <agoncha...@gridgain.com>
Committed: Sat Mar 21 03:01:02 2015 -0700

----------------------------------------------------------------------
 .../store/CacheNodeWithStoreStartup.java        |   4 -
 .../java7/datagrid/store/CacheStoreExample.java |   1 -
 .../store/dummy/CacheDummyPersonStore.java      |   1 -
 .../hibernate/CacheHibernatePersonStore.java    |   1 -
 .../store/jdbc/CacheJdbcPersonStore.java        |   1 -
 .../store/jdbc/CacheJdbcPojoPersonStore.java    |   1 -
 .../ignite/examples/BasicExamplesSelfTest.java  |   1 -
 .../ignite/examples/CacheExamplesSelfTest.java  |   4 -
 ...heStoreLoadDataExampleMultiNodeSelfTest.java |   1 -
 .../examples/CheckpointExamplesSelfTest.java    |   1 -
 .../ComputeClusterGroupsExampleSelfTest.java    |   1 -
 .../examples/ContinuationExamplesSelfTest.java  |   1 -
 .../ContinuousMapperExamplesSelfTest.java       |   1 -
 .../examples/DeploymentExamplesSelfTest.java    |   1 -
 .../ignite/examples/EventsExamplesSelfTest.java |   1 -
 ...ibernateL2CacheExampleMultiNodeSelfTest.java |   1 -
 .../HibernateL2CacheExampleSelfTest.java        |   1 -
 .../ignite/examples/IgfsExamplesSelfTest.java   |   1 -
 .../examples/LifecycleExamplesSelfTest.java     |   1 -
 .../MemcacheRestExamplesMultiNodeSelfTest.java  |   1 -
 .../examples/MemcacheRestExamplesSelfTest.java  |   1 -
 .../examples/MessagingExamplesSelfTest.java     |   1 -
 .../examples/MonteCarloExamplesSelfTest.java    |   1 -
 .../examples/SpringBeanExamplesSelfTest.java    |   1 -
 .../ignite/examples/TaskExamplesSelfTest.java   |   1 -
 .../cache/CacheServerNotFoundException.java     |  46 +++++++
 .../apache/ignite/internal/IgniteKernal.java    |  14 +-
 .../ClusterTopologyServerNotFoundException.java |  39 ++++++
 .../affinity/GridAffinityProcessor.java         |  80 ++++++------
 .../processors/affinity/GridAffinityUtils.java  |   2 +
 .../cache/DynamicCacheChangeRequest.java        |  17 +--
 .../processors/cache/GridCacheContext.java      |  34 +++++
 .../processors/cache/GridCacheGateway.java      |  11 ++
 .../GridCachePartitionExchangeManager.java      |   2 +-
 .../processors/cache/GridCacheProcessor.java    |  28 ++--
 .../processors/cache/GridCacheUtils.java        |   3 +
 .../processors/cache/IgniteCacheProxy.java      |  19 +--
 .../dht/atomic/GridNearAtomicUpdateFuture.java  |   3 +-
 .../colocated/GridDhtColocatedLockFuture.java   |   3 +-
 .../distributed/near/GridNearAtomicCache.java   |   2 +
 .../distributed/near/GridNearLockFuture.java    |   2 +-
 .../local/atomic/GridLocalAtomicCache.java      |   5 -
 .../datastreamer/DataStreamerImpl.java          |  77 +++++++----
 .../datastreamer/DataStreamerUpdateJob.java     |   1 +
 .../dr/IgniteDrDataStreamerCacheUpdater.java    |   5 +-
 .../GridAffinityProcessorAbstractSelfTest.java  |   2 +-
 .../cache/IgniteCacheDynamicStopSelfTest.java   | 130 +++++++++++++++++++
 .../ignite/testsuites/IgniteCacheTestSuite.java |   1 +
 48 files changed, 409 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheNodeWithStoreStartup.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheNodeWithStoreStartup.java
 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheNodeWithStoreStartup.java
index 3191611..979e9f7 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheNodeWithStoreStartup.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheNodeWithStoreStartup.java
@@ -21,10 +21,6 @@ import org.apache.ignite.*;
 import org.apache.ignite.cache.*;
 import org.apache.ignite.cache.store.*;
 import org.apache.ignite.configuration.*;
-import org.apache.ignite.examples.datagrid.store.dummy.*;
-import org.apache.ignite.examples.datagrid.store.hibernate.*;
-import org.apache.ignite.examples.datagrid.store.jdbc.*;
-import org.apache.ignite.examples.datagrid.store.model.*;
 import org.apache.ignite.examples.java7.datagrid.store.dummy.*;
 import org.apache.ignite.examples.java7.datagrid.store.hibernate.*;
 import org.apache.ignite.examples.java7.datagrid.store.jdbc.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheStoreExample.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheStoreExample.java
 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheStoreExample.java
index bcf43a1..e8e3d8f 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheStoreExample.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/CacheStoreExample.java
@@ -19,7 +19,6 @@ package org.apache.ignite.examples.java7.datagrid.store;
 
 import org.apache.ignite.*;
 import org.apache.ignite.configuration.*;
-import org.apache.ignite.examples.datagrid.store.model.*;
 import org.apache.ignite.examples.java7.datagrid.store.model.*;
 import org.apache.ignite.transactions.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/dummy/CacheDummyPersonStore.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/dummy/CacheDummyPersonStore.java
 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/dummy/CacheDummyPersonStore.java
index ff1be52..acbc08c 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/dummy/CacheDummyPersonStore.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/dummy/CacheDummyPersonStore.java
@@ -19,7 +19,6 @@ package org.apache.ignite.examples.java7.datagrid.store.dummy;
 
 import org.apache.ignite.*;
 import org.apache.ignite.cache.store.*;
-import org.apache.ignite.examples.datagrid.store.model.*;
 import org.apache.ignite.examples.java7.datagrid.store.model.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.resources.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/hibernate/CacheHibernatePersonStore.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/hibernate/CacheHibernatePersonStore.java
 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/hibernate/CacheHibernatePersonStore.java
index 16c199e..2883375 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/hibernate/CacheHibernatePersonStore.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/hibernate/CacheHibernatePersonStore.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples.java7.datagrid.store.hibernate;
 
 import org.apache.ignite.cache.store.*;
-import org.apache.ignite.examples.datagrid.store.model.*;
 import org.apache.ignite.examples.java7.datagrid.store.model.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.resources.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPersonStore.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPersonStore.java
 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPersonStore.java
index daf1674..349fde6 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPersonStore.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPersonStore.java
@@ -19,7 +19,6 @@ package org.apache.ignite.examples.java7.datagrid.store.jdbc;
 
 import org.apache.ignite.*;
 import org.apache.ignite.cache.store.*;
-import org.apache.ignite.examples.datagrid.store.model.*;
 import org.apache.ignite.examples.java7.datagrid.store.model.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.resources.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java
----------------------------------------------------------------------
diff --git 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java
 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java
index 87efd33..7760fb1 100644
--- 
a/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java
+++ 
b/examples/src/main/java/org/apache/ignite/examples/java7/datagrid/store/jdbc/CacheJdbcPojoPersonStore.java
@@ -19,7 +19,6 @@ package org.apache.ignite.examples.java7.datagrid.store.jdbc;
 
 import org.apache.ignite.*;
 import org.apache.ignite.cache.store.jdbc.*;
-import org.apache.ignite.examples.datagrid.store.model.*;
 import org.apache.ignite.examples.java7.datagrid.store.model.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.h2.tools.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/BasicExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/BasicExamplesSelfTest.java 
b/examples/src/test/java/org/apache/ignite/examples/BasicExamplesSelfTest.java
index 9a48966..4d14716 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/BasicExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/BasicExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.*;
 import org.apache.ignite.examples.java7.computegrid.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/CacheExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/CacheExamplesSelfTest.java 
b/examples/src/test/java/org/apache/ignite/examples/CacheExamplesSelfTest.java
index 38c2cf6..f6878eb 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/CacheExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/CacheExamplesSelfTest.java
@@ -17,10 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.datagrid.*;
-import org.apache.ignite.examples.datagrid.starschema.*;
-import org.apache.ignite.examples.datagrid.store.*;
-import org.apache.ignite.examples.datastructures.*;
 import org.apache.ignite.examples.java7.datagrid.*;
 import org.apache.ignite.examples.java7.datagrid.starschema.*;
 import org.apache.ignite.examples.java7.datagrid.store.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/CacheStoreLoadDataExampleMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/CacheStoreLoadDataExampleMultiNodeSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/CacheStoreLoadDataExampleMultiNodeSelfTest.java
index d145fe0..2cea6b1 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/CacheStoreLoadDataExampleMultiNodeSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/CacheStoreLoadDataExampleMultiNodeSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.datagrid.store.*;
 import org.apache.ignite.examples.java7.datagrid.store.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/CheckpointExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/CheckpointExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/CheckpointExamplesSelfTest.java
index dd79cb8..03d21f4 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/CheckpointExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/CheckpointExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.failover.*;
 import org.apache.ignite.examples.java7.computegrid.failover.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/ComputeClusterGroupsExampleSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/ComputeClusterGroupsExampleSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/ComputeClusterGroupsExampleSelfTest.java
index 2bbf243..c9dd315 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/ComputeClusterGroupsExampleSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/ComputeClusterGroupsExampleSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.*;
 import org.apache.ignite.examples.java7.computegrid.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/ContinuationExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/ContinuationExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/ContinuationExamplesSelfTest.java
index 6876415..7ea5c9a 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/ContinuationExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/ContinuationExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.*;
 import org.apache.ignite.examples.java7.computegrid.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/ContinuousMapperExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/ContinuousMapperExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/ContinuousMapperExamplesSelfTest.java
index 18500ab..93b3fe3 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/ContinuousMapperExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/ContinuousMapperExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.*;
 import org.apache.ignite.examples.java7.computegrid.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/DeploymentExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/DeploymentExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/DeploymentExamplesSelfTest.java
index a6f69af..a48d8c8 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/DeploymentExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/DeploymentExamplesSelfTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples;
 
 import org.apache.ignite.examples.java7.misc.deployment.*;
-import org.apache.ignite.examples.misc.deployment.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/EventsExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/EventsExamplesSelfTest.java 
b/examples/src/test/java/org/apache/ignite/examples/EventsExamplesSelfTest.java
index a365350..e625fb3 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/EventsExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/EventsExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.events.*;
 import org.apache.ignite.examples.java7.events.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
index b12d07e..e18611c 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleMultiNodeSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.datagrid.hibernate.*;
 import org.apache.ignite.examples.java7.datagrid.hibernate.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
index 3dcdb65..bc9c96c 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/HibernateL2CacheExampleSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.datagrid.hibernate.*;
 import org.apache.ignite.examples.java7.datagrid.hibernate.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/IgfsExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/IgfsExamplesSelfTest.java 
b/examples/src/test/java/org/apache/ignite/examples/IgfsExamplesSelfTest.java
index 81b1104..e1b8826 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/IgfsExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/IgfsExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.igfs.*;
 import org.apache.ignite.examples.java7.igfs.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.testframework.junits.common.*;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/LifecycleExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/LifecycleExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/LifecycleExamplesSelfTest.java
index 98b4ea4..ab4e283 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/LifecycleExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/LifecycleExamplesSelfTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples;
 
 import org.apache.ignite.examples.java7.misc.lifecycle.*;
-import org.apache.ignite.examples.misc.lifecycle.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesMultiNodeSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesMultiNodeSelfTest.java
index 9ef0b45..692a5ed 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesMultiNodeSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesMultiNodeSelfTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples;
 
 import org.apache.ignite.examples.java7.misc.client.memcache.*;
-import org.apache.ignite.examples.misc.client.memcache.*;
 
 /**
  * MemcacheRestExample multi-node self test.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesSelfTest.java
index 4bb031a..c701e90 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/MemcacheRestExamplesSelfTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples;
 
 import org.apache.ignite.examples.java7.misc.client.memcache.*;
-import org.apache.ignite.examples.misc.client.memcache.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/MessagingExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/MessagingExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/MessagingExamplesSelfTest.java
index b42ae84..6fe6bfd 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/MessagingExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/MessagingExamplesSelfTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples;
 
 import org.apache.ignite.examples.java7.messaging.*;
-import org.apache.ignite.examples.messaging.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/MonteCarloExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/MonteCarloExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/MonteCarloExamplesSelfTest.java
index 8a3da4c..fa02d23 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/MonteCarloExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/MonteCarloExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.montecarlo.*;
 import org.apache.ignite.examples.java7.computegrid.montecarlo.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/SpringBeanExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/SpringBeanExamplesSelfTest.java
 
b/examples/src/test/java/org/apache/ignite/examples/SpringBeanExamplesSelfTest.java
index 6b26866..e96bd68 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/SpringBeanExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/SpringBeanExamplesSelfTest.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.examples;
 
 import org.apache.ignite.examples.java7.misc.springbean.*;
-import org.apache.ignite.examples.misc.springbean.*;
 import org.apache.ignite.testframework.junits.common.*;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/examples/src/test/java/org/apache/ignite/examples/TaskExamplesSelfTest.java
----------------------------------------------------------------------
diff --git 
a/examples/src/test/java/org/apache/ignite/examples/TaskExamplesSelfTest.java 
b/examples/src/test/java/org/apache/ignite/examples/TaskExamplesSelfTest.java
index b4be694..abb92f2 100644
--- 
a/examples/src/test/java/org/apache/ignite/examples/TaskExamplesSelfTest.java
+++ 
b/examples/src/test/java/org/apache/ignite/examples/TaskExamplesSelfTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.examples;
 
-import org.apache.ignite.examples.computegrid.*;
 import org.apache.ignite.examples.java7.computegrid.*;
 import org.apache.ignite.testframework.junits.common.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/cache/CacheServerNotFoundException.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/CacheServerNotFoundException.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/CacheServerNotFoundException.java
new file mode 100644
index 0000000..d1e2f06
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/CacheServerNotFoundException.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.cache;
+
+import javax.cache.CacheException;
+
+/**
+ * Exception thrown when all data nodes left the grid.
+ */
+public class CacheServerNotFoundException extends CacheException {
+    /**
+     * @param message Error message.
+     */
+    public CacheServerNotFoundException(String message) {
+        super(message);
+    }
+
+    /**
+     * @param message Error message.
+     * @param cause Error cause.
+     */
+    public CacheServerNotFoundException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * @param cause Error cause.
+     */
+    public CacheServerNotFoundException(Throwable cause) {
+        super(cause);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 4e6897d..16eec48 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -2372,15 +2372,21 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
     @Override public void destroyCache(String cacheName) {
         guard();
 
+        IgniteInternalFuture<?> stopFut;
+
         try {
-            ctx.cache().dynamicStopCache(cacheName).get();
-        }
-        catch (IgniteCheckedException e) {
-            throw CU.convertToCacheException(e);
+            stopFut = ctx.cache().dynamicStopCache(cacheName);
         }
         finally {
             unguard();
         }
+
+        try {
+            stopFut.get();
+        }
+        catch (IgniteCheckedException e) {
+            throw CU.convertToCacheException(e);
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyServerNotFoundException.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyServerNotFoundException.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyServerNotFoundException.java
new file mode 100644
index 0000000..5f55911
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyServerNotFoundException.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.internal.cluster;
+
+import org.apache.ignite.cluster.*;
+
+/**
+ * Internal exception that is used to indicate that all server nodes have left 
the grid.
+ */
+public class ClusterTopologyServerNotFoundException extends 
ClusterTopologyCheckedException {
+    /**
+     * @param message Error message.
+     */
+    public ClusterTopologyServerNotFoundException(String message) {
+        super(message);
+    }
+
+    /**
+     * @param message Error message.
+     * @param cause Exception cause.
+     */
+    public ClusterTopologyServerNotFoundException(String message, Throwable 
cause) {
+        super(message, cause);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
index a214257..82491a6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
@@ -153,7 +153,7 @@ public class GridAffinityProcessor extends 
GridProcessorAdapter {
     @Nullable public <K> ClusterNode mapKeyToNode(@Nullable String cacheName, 
K key) throws IgniteCheckedException {
         Map<ClusterNode, Collection<K>> map = keysToNodes(cacheName, 
F.asList(key));
 
-        return map != null ? F.first(map.keySet()) : null;
+        return !F.isEmpty(map) ? F.first(map.keySet()) : null;
     }
 
     /**
@@ -181,27 +181,14 @@ public class GridAffinityProcessor extends 
GridProcessorAdapter {
     public <K> List<ClusterNode> mapKeyToPrimaryAndBackups(@Nullable String 
cacheName, K key) throws IgniteCheckedException {
         A.notNull(key, "key");
 
-        ClusterNode loc = ctx.discovery().localNode();
-
-        if (ctx.discovery().cacheNode(loc, cacheName) && 
ctx.cache().cache(cacheName).configuration().getCacheMode() == LOCAL)
-            return Collections.singletonList(loc);
-
-        AffinityTopologyVersion topVer = new 
AffinityTopologyVersion(ctx.discovery().topologyVersion());
+        AffinityTopologyVersion topVer = ctx.discovery().topologyVersionEx();
 
         AffinityInfo affInfo = affinityCache(cacheName, topVer);
 
-        return primaryAndBackups(affInfo, key);
-    }
+        if (affInfo == null)
+            return Collections.emptyList();
 
-    /**
-     * Maps single key to a node on default cache.
-     *
-     * @param key Key to map.
-     * @return Picked node.
-     * @throws IgniteCheckedException If failed.
-     */
-    @Nullable public <K> ClusterNode mapKeyToNode(K key) throws 
IgniteCheckedException {
-        return mapKeyToNode(null, key);
+        return primaryAndBackups(affInfo, key);
     }
 
     /**
@@ -267,11 +254,6 @@ public class GridAffinityProcessor extends 
GridProcessorAdapter {
         if (F.isEmpty(keys))
             return Collections.emptyMap();
 
-        ClusterNode loc = ctx.discovery().localNode();
-
-        if (ctx.discovery().cacheNode(loc, cacheName) && 
ctx.cache().cache(cacheName).configuration().getCacheMode() == LOCAL)
-            return F.asMap(loc, (Collection<K>)keys);
-
         AffinityInfo affInfo = affinityCache(cacheName, topVer);
 
         return affInfo != null ? affinityMap(affInfo, keys) : 
Collections.<ClusterNode, Collection<K>>emptyMap();
@@ -296,30 +278,44 @@ public class GridAffinityProcessor extends 
GridProcessorAdapter {
         ClusterNode loc = ctx.discovery().localNode();
 
         // Check local node.
-        if (ctx.discovery().cacheNode(loc, cacheName)) {
-            GridCacheContext<Object,Object> cctx = 
ctx.cache().internalCache(cacheName).context();
+        Collection<ClusterNode> cacheNodes = 
ctx.discovery().cacheNodes(cacheName, topVer);
 
-            AffinityInfo info = new AffinityInfo(
-                cctx.config().getAffinity(),
-                cctx.config().getAffinityMapper(),
-                new GridAffinityAssignment(topVer, 
cctx.affinity().assignments(topVer)),
-                cctx.cacheObjectContext());
+        if (cacheNodes.contains(loc)) {
+            GridCacheAdapter<Object, Object> cache = 
ctx.cache().internalCache(cacheName);
 
-            IgniteInternalFuture<AffinityInfo> old = affMap.putIfAbsent(key, 
new GridFinishedFuture<>(info));
+            // Cache is being stopped.
+            if (cache == null)
+                return null;
 
-            if (old != null)
-                info = old.get();
+            GridCacheContext<Object,Object> cctx = cache.context();
 
-            return info;
-        }
+            cctx.awaitStarted();
 
-        Collection<ClusterNode> cacheNodes = F.view(
-            ctx.discovery().remoteNodes(),
-            new P1<ClusterNode>() {
-                @Override public boolean apply(ClusterNode n) {
-                    return ctx.discovery().cacheNode(n, cacheName);
-                }
-            });
+            try {
+                cctx.gate().enter();
+            }
+            catch (IllegalStateException ignored) {
+                return null;
+            }
+
+            try {
+                AffinityInfo info = new AffinityInfo(
+                    cctx.config().getAffinity(),
+                    cctx.config().getAffinityMapper(),
+                    new GridAffinityAssignment(topVer, 
cctx.affinity().assignments(topVer)),
+                    cctx.cacheObjectContext());
+
+                IgniteInternalFuture<AffinityInfo> old = 
affMap.putIfAbsent(key, new GridFinishedFuture<>(info));
+
+                if (old != null)
+                    info = old.get();
+
+                return info;
+            }
+            finally {
+                cctx.gate().leave();
+            }
+        }
 
         if (F.isEmpty(cacheNodes))
             return null;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityUtils.java
index 33bc851..bb7a3b5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityUtils.java
@@ -166,6 +166,8 @@ class GridAffinityUtils {
 
             GridKernalContext ctx = kernal.context();
 
+            cctx.affinity().affinityReadyFuture(topVer).get();
+
             return F.t(
                 affinityMessage(ctx, cctx.config().getAffinity()),
                 affinityMessage(ctx, cctx.config().getAffinityMapper()),

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java
index 5763a36..a539e1d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeRequest.java
@@ -58,23 +58,24 @@ public class DynamicCacheChangeRequest implements 
Serializable {
      * Constructor creates cache stop request.
      *
      * @param cacheName Cache stop name.
+     * @param initiatingNodeId Initiating node ID.
+     * @param stop Stop flag.
      */
-    public DynamicCacheChangeRequest(String cacheName, UUID initiatingNodeId) {
+    public DynamicCacheChangeRequest(String cacheName, UUID initiatingNodeId, 
boolean stop) {
         this.cacheName = cacheName;
         this.initiatingNodeId = initiatingNodeId;
 
-        stop = true;
+        this.stop = stop;
     }
 
     /**
-     * Constructor creates near cache start request.
+     * Constructor means for start requests.
      *
+     * @param cacheName Cache name.
      * @param initiatingNodeId Initiating node ID.
      */
-    public DynamicCacheChangeRequest(
-        UUID initiatingNodeId
-    ) {
-        this.initiatingNodeId = initiatingNodeId;
+    public DynamicCacheChangeRequest(String cacheName, UUID initiatingNodeId) {
+        this(cacheName, initiatingNodeId, false);
     }
 
     /**
@@ -109,7 +110,7 @@ public class DynamicCacheChangeRequest implements 
Serializable {
      * @return Cache name.
      */
     public String cacheName() {
-        return cacheName != null ? cacheName : startCfg.getName();
+        return cacheName;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
index d6bcbd6..587b7d7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContext.java
@@ -189,6 +189,9 @@ public class GridCacheContext<K, V> implements 
Externalizable {
     /** */
     private CacheObjectContext cacheObjCtx;
 
+    /** */
+    private CountDownLatch startLatch = new CountDownLatch(1);
+
     /** Start topology version. */
     private AffinityTopologyVersion startTopVer;
 
@@ -337,6 +340,37 @@ public class GridCacheContext<K, V> implements 
Externalizable {
     }
 
     /**
+     * @throws IgniteCheckedException If failed to wait.
+     */
+    public void awaitStarted() throws IgniteCheckedException {
+        U.await(startLatch);
+
+        GridCachePreloader<K, V> prldr = preloader();
+
+        if (prldr != null)
+            prldr.startFuture().get();
+    }
+
+    /**
+     * @return Started flag.
+     */
+    public boolean started() {
+        if (startLatch.getCount() != 0)
+            return false;
+
+        GridCachePreloader<K, V> prldr = preloader();
+
+        return prldr == null || prldr.startFuture().isDone();
+    }
+
+    /**
+     * 
+     */
+    public void onStarted() {
+        startLatch.countDown();
+    }
+
+    /**
      * @return Start topology version.
      */
     public AffinityTopologyVersion startTopologyVersion() {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheGateway.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheGateway.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheGateway.java
index 2dff41b..9059478 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheGateway.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheGateway.java
@@ -210,6 +210,17 @@ public class GridCacheGateway<K, V> {
      *
      */
     public void onStopped() {
+        // Must prevent re-entries to the read lock.
         stopped = true;
+
+        ctx.kernalContext().gateway().writeLock();
+
+        try {
+            // No-op.
+            stopped = true;
+        }
+        finally {
+            ctx.kernalContext().gateway().writeUnlock();
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index e2206e9..201801f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -550,7 +550,7 @@ public class GridCachePartitionExchangeManager<K, V> 
extends GridCacheSharedMana
         GridDhtPartitionsFullMessage m = new 
GridDhtPartitionsFullMessage(null, null, AffinityTopologyVersion.NONE);
 
         for (GridCacheContext cacheCtx : cctx.cacheContexts()) {
-            if (!cacheCtx.isLocal())
+            if (!cacheCtx.isLocal() && cacheCtx.started())
                 m.addFullPartitionsMap(cacheCtx.cacheId(), 
cacheCtx.topology().partitionMap(true));
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 729947b..3a4cf6a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -825,6 +825,8 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
 
         cacheCtx.cache().start();
 
+        cacheCtx.onStarted();
+
         if (log.isInfoEnabled())
             log.info("Started cache [name=" + cfg.getName() + ", mode=" + 
cfg.getCacheMode() + ']');
     }
@@ -1458,7 +1460,7 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
 
         for (DynamicCacheDescriptor desc : registeredCaches.values()) {
             if (!desc.cancelled()) {
-                DynamicCacheChangeRequest req = new 
DynamicCacheChangeRequest(null);
+                DynamicCacheChangeRequest req = new 
DynamicCacheChangeRequest(desc.cacheConfiguration().getName(), null);
 
                 req.startCacheConfiguration(desc.cacheConfiguration());
 
@@ -1547,7 +1549,7 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
 
         DynamicCacheDescriptor desc = 
registeredCaches.get(maskNull(cacheName));
 
-        DynamicCacheChangeRequest req = new 
DynamicCacheChangeRequest(ctx.localNodeId());
+        DynamicCacheChangeRequest req = new 
DynamicCacheChangeRequest(cacheName, ctx.localNodeId());
 
         if (ccfg != null) {
             if (desc != null && !desc.cancelled()) {
@@ -1628,7 +1630,7 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
      * @return Future that will be completed when cache is stopped.
      */
     public IgniteInternalFuture<?> dynamicStopCache(String cacheName) {
-        DynamicCacheChangeRequest t = new DynamicCacheChangeRequest(cacheName, 
ctx.localNodeId());
+        DynamicCacheChangeRequest t = new DynamicCacheChangeRequest(cacheName, 
ctx.localNodeId(), true);
 
         return F.first(initiateCacheChanges(F.asList(t)));
     }
@@ -2193,21 +2195,21 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
     }
 
     /**
-     * @param name Cache name.
+     * @param cacheName Cache name.
      * @param <K> type of keys.
      * @param <V> type of values.
      * @return Cache instance for given name.
      */
     @SuppressWarnings("unchecked")
-    public <K, V> IgniteCache<K, V> publicJCache(@Nullable String name) {
+    public <K, V> IgniteCache<K, V> publicJCache(@Nullable String cacheName) {
         if (log.isDebugEnabled())
-            log.debug("Getting public cache for name: " + name);
+            log.debug("Getting public cache for name: " + cacheName);
 
-        if (sysCaches.contains(maskNull(name)))
-            throw new IllegalStateException("Failed to get cache because it is 
a system cache: " + name);
+        if (sysCaches.contains(maskNull(cacheName)))
+            throw new IllegalStateException("Failed to get cache because it is 
a system cache: " + cacheName);
 
         try {
-            String masked = maskNull(name);
+            String masked = maskNull(cacheName);
 
             IgniteCache<K,V> cache = (IgniteCache<K, 
V>)jCacheProxies.get(masked);
 
@@ -2215,11 +2217,11 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 DynamicCacheDescriptor desc = registeredCaches.get(masked);
 
                 if (desc == null || desc.cancelled())
-                    throw new IllegalArgumentException("Cache is not started: 
" + name);
+                    throw new IllegalArgumentException("Cache is not started: 
" + cacheName);
 
-                DynamicCacheChangeRequest req = new 
DynamicCacheChangeRequest(ctx.localNodeId());
+                DynamicCacheChangeRequest req = new 
DynamicCacheChangeRequest(cacheName, ctx.localNodeId());
 
-                req.cacheName(name);
+                req.cacheName(cacheName);
 
                 req.deploymentId(desc.deploymentId());
 
@@ -2236,7 +2238,7 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
                 cache = (IgniteCache<K, V>)jCacheProxies.get(masked);
 
                 if (cache == null)
-                    throw new IllegalArgumentException("Cache is not started: 
" + name);
+                    throw new IllegalArgumentException("Cache is not started: 
" + cacheName);
             }
 
             return cache;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index 83bd16b..b9baf58 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -23,6 +23,7 @@ import org.apache.ignite.cache.affinity.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.cluster.*;
 import org.apache.ignite.internal.processors.affinity.*;
 import org.apache.ignite.internal.processors.cache.distributed.*;
 import org.apache.ignite.internal.processors.cache.distributed.dht.*;
@@ -1802,6 +1803,8 @@ public class GridCacheUtils {
             return new 
CachePartialUpdateException((CachePartialUpdateCheckedException)e);
         else if (e instanceof CacheAtomicUpdateTimeoutCheckedException)
             return new CacheAtomicUpdateTimeoutException(e.getMessage(), e);
+        else if (e instanceof ClusterTopologyServerNotFoundException)
+            return new CacheServerNotFoundException(e.getMessage(), e);
 
         if (e.getCause() instanceof CacheException)
             return (CacheException)e.getCause();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/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 ea5761a..2b297ef 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
@@ -465,10 +465,7 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
      * @return {@code true} If this is a replicated cache and we are on a data 
node.
      */
     private boolean isReplicatedDataNode() {
-        if (!ctx.isReplicated())
-            return false;
-
-        return ctx.affinityNode();
+        return ctx.isReplicated() && ctx.affinityNode();
     }
 
     /**
@@ -1260,15 +1257,21 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
         if (!gate.enterIfNotClosed())
             return;
 
+        IgniteInternalFuture<?> fut;
+
         try {
-            ctx.kernalContext().cache().dynamicStopCache(ctx.name()).get();
-        }
-        catch (IgniteCheckedException e) {
-            throw cacheException(e);
+            fut = ctx.kernalContext().cache().dynamicStopCache(ctx.name());
         }
         finally {
             gate.leave();
         }
+
+        try {
+            fut.get();
+        }
+        catch (IgniteCheckedException e) {
+            throw cacheException(e);
+        }
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
index a26598f..6459ded 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java
@@ -484,7 +484,8 @@ public class GridNearAtomicUpdateFuture extends 
GridFutureAdapter<Object>
         Collection<ClusterNode> topNodes = CU.affinityNodes(cctx, topVer);
 
         if (F.isEmpty(topNodes)) {
-            onDone(new ClusterTopologyCheckedException("Failed to map keys for 
cache (all partition nodes left the grid)."));
+            onDone(new ClusterTopologyServerNotFoundException("Failed to map 
keys for cache (all partition nodes " +
+                "left the grid)."));
 
             return;
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index c756998..1acb364 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -594,7 +594,8 @@ public final class GridDhtColocatedLockFuture<K, V> extends 
GridCompoundIdentity
             assert topVer.topologyVersion() > 0;
 
             if (CU.affinityNodes(cctx, topVer).isEmpty()) {
-                onDone(new ClusterTopologyCheckedException("Failed to map keys 
for cache (all partition nodes left the grid)."));
+                onDone(new ClusterTopologyServerNotFoundException("Failed to 
map keys for cache " +
+                    "(all partition nodes left the grid): " + cctx.name()));
 
                 return;
             }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index 1160935..27980d2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -76,6 +76,8 @@ public class GridNearAtomicCache<K, V> extends 
GridNearCacheAdapter<K, V> {
 
     /** {@inheritDoc} */
     @Override public void start() throws IgniteCheckedException {
+        super.start();
+
         ctx.io().addHandler(ctx.cacheId(), GridNearGetResponse.class, new 
CI2<UUID, GridNearGetResponse>() {
             @Override public void apply(UUID nodeId, GridNearGetResponse res) {
                 processGetResponse(nodeId, res);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index 3354e81..0949760 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -726,7 +726,7 @@ public final class GridNearLockFuture<K, V> extends 
GridCompoundIdentityFuture<B
             assert topVer.topologyVersion() > 0;
 
             if (CU.affinityNodes(cctx, topVer).isEmpty()) {
-                onDone(new ClusterTopologyCheckedException("Failed to map keys 
for near-only cache (all " +
+                onDone(new ClusterTopologyServerNotFoundException("Failed to 
map keys for near-only cache (all " +
                     "partition nodes left the grid)."));
 
                 return;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
index b905781..a5d84a2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/atomic/GridLocalAtomicCache.java
@@ -91,11 +91,6 @@ public class GridLocalAtomicCache<K, V> extends 
GridCacheAdapter<K, V> {
     }
 
     /** {@inheritDoc} */
-    @Override public void start() throws IgniteCheckedException {
-        // No-op.
-    }
-
-    /** {@inheritDoc} */
     @Override public boolean isLocal() {
         return true;
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
index 2e438d1..725d71b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
@@ -652,8 +652,22 @@ public class DataStreamerImpl<K, V> implements 
IgniteDataStreamer<K, V>, Delayed
     private List<ClusterNode> nodes(KeyCacheObject key) throws 
IgniteCheckedException {
         GridAffinityProcessor aff = ctx.affinity();
 
-        return !allowOverwrite() ? aff.mapKeyToPrimaryAndBackups(cacheName, 
key) :
-            Collections.singletonList(aff.mapKeyToNode(cacheName, key));
+        List<ClusterNode> res = null;
+
+        if (!allowOverwrite())
+            res = aff.mapKeyToPrimaryAndBackups(cacheName, key);
+        else {
+            ClusterNode node = aff.mapKeyToNode(cacheName, key);
+
+            if (node != null)
+                res = Collections.singletonList(node);
+        }
+
+        if (F.isEmpty(res))
+            throw new ClusterTopologyServerNotFoundException("Failed to find 
server node for cache (all affinity " +
+                "nodes have left the grid or cache was stopped): " + 
cacheName);
+
+        return res;
     }
 
     /**
@@ -1362,44 +1376,51 @@ public class DataStreamerImpl<K, V> implements 
IgniteDataStreamer<K, V>, Delayed
             Collection<Map.Entry<KeyCacheObject, CacheObject>> entries) {
             IgniteCacheProxy<KeyCacheObject, CacheObject> proxy = 
(IgniteCacheProxy<KeyCacheObject, CacheObject>)cache;
 
-            GridCacheAdapter<KeyCacheObject, CacheObject> internalCache = 
proxy.context().cache();
+            proxy.gate().enter();
 
-            if (internalCache.isNear())
-                internalCache = internalCache.context().near().dht();
+            try {
+                GridCacheAdapter<KeyCacheObject, CacheObject> internalCache = 
proxy.context().cache();
 
-            GridCacheContext cctx = internalCache.context();
+                if (internalCache.isNear())
+                    internalCache = internalCache.context().near().dht();
 
-            AffinityTopologyVersion topVer = 
cctx.affinity().affinityTopologyVersion();
+                GridCacheContext cctx = internalCache.context();
 
-            GridCacheVersion ver = cctx.versions().next(topVer);
+                AffinityTopologyVersion topVer = 
cctx.affinity().affinityTopologyVersion();
 
-            for (Map.Entry<KeyCacheObject, CacheObject> e : entries) {
-                try {
-                    e.getKey().finishUnmarshal(cctx.cacheObjectContext(), 
cctx.deploy().globalLoader());
+                GridCacheVersion ver = cctx.versions().next(topVer);
 
-                    GridCacheEntryEx entry = internalCache.entryEx(e.getKey(), 
topVer);
+                for (Entry<KeyCacheObject, CacheObject> e : entries) {
+                    try {
+                        e.getKey().finishUnmarshal(cctx.cacheObjectContext(), 
cctx.deploy().globalLoader());
 
-                    entry.unswap(true, false);
+                        GridCacheEntryEx entry = 
internalCache.entryEx(e.getKey(), topVer);
 
-                    entry.initialValue(e.getValue(),
-                        ver,
-                        CU.TTL_ETERNAL,
-                        CU.EXPIRE_TIME_ETERNAL,
-                        false,
-                        topVer,
-                        GridDrType.DR_LOAD);
+                        entry.unswap(true, false);
 
-                    cctx.evicts().touch(entry, topVer);
-                }
-                catch (GridDhtInvalidPartitionException | 
GridCacheEntryRemovedException ignored) {
-                    // No-op.
-                }
-                catch (IgniteCheckedException ex) {
-                    IgniteLogger log = cache.unwrap(Ignite.class).log();
+                        entry.initialValue(e.getValue(),
+                            ver,
+                            CU.TTL_ETERNAL,
+                            CU.EXPIRE_TIME_ETERNAL,
+                            false,
+                            topVer,
+                            GridDrType.DR_LOAD);
 
-                    U.error(log, "Failed to set initial value for cache entry: 
" + e, ex);
+                        cctx.evicts().touch(entry, topVer);
+                    }
+                    catch (GridDhtInvalidPartitionException | 
GridCacheEntryRemovedException ignored) {
+                        // No-op.
+                    }
+                    catch (IgniteCheckedException ex) {
+                        IgniteLogger log = cache.unwrap(Ignite.class).log();
+
+                        U.error(log, "Failed to set initial value for cache 
entry: " + e, ex);
+                    }
                 }
             }
+            finally {
+                proxy.gate().leave();
+            }
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateJob.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateJob.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateJob.java
index c984558..e06946f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateJob.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerUpdateJob.java
@@ -89,6 +89,7 @@ class DataStreamerUpdateJob implements 
GridPlainCallable<Object> {
             log.debug("Running put job [nodeId=" + ctx.localNodeId() + ", 
size=" + col.size() + ']');
 
 //        TODO IGNITE-77: restore adapter usage.
+//        TODO use cacheContext.awaitStarted() instead of 
preloader().startFuture().get()
 //        GridCacheAdapter<Object, Object> cache = 
ctx.cache().internalCache(cacheName);
 //
 //        IgniteFuture<?> f = cache.context().preloader().startFuture();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/IgniteDrDataStreamerCacheUpdater.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/IgniteDrDataStreamerCacheUpdater.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/IgniteDrDataStreamerCacheUpdater.java
index 82ad62b..818b99a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/IgniteDrDataStreamerCacheUpdater.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/dr/IgniteDrDataStreamerCacheUpdater.java
@@ -53,10 +53,7 @@ public class IgniteDrDataStreamerCacheUpdater implements 
StreamReceiver<KeyCache
             if (log.isDebugEnabled())
                 log.debug("Running DR put job [nodeId=" + ctx.localNodeId() + 
", cacheName=" + cacheName + ']');
 
-            IgniteInternalFuture<?> f = 
cache.context().preloader().startFuture();
-
-            if (!f.isDone())
-                f.get();
+            cache.context().awaitStarted();
 
             CacheObjectContext cacheObjCtx = 
cache.context().cacheObjectContext();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
index 668bf6a..360d8f8 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessorAbstractSelfTest.java
@@ -175,7 +175,7 @@ public abstract class GridAffinityProcessorAbstractSelfTest 
extends GridCommonAb
         int iterations = 10000000;
 
         for (int i = 0; i < iterations; i++)
-            aff.mapKeyToNode(keys);
+            aff.mapKeyToNode(null, keys);
 
         long diff = System.currentTimeMillis() - start;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDynamicStopSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDynamicStopSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDynamicStopSelfTest.java
new file mode 100644
index 0000000..2624432
--- /dev/null
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheDynamicStopSelfTest.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.cache.*;
+import org.apache.ignite.configuration.*;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.typedef.CI1;
+import org.apache.ignite.lang.IgniteFuture;
+import org.apache.ignite.testframework.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import javax.cache.Cache;
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ *
+ */
+public class IgniteCacheDynamicStopSelfTest extends GridCommonAbstractTest {
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        super.beforeTestsStarted();
+
+        startGrids(4);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        super.afterTestsStopped();
+
+        stopAllGrids();
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testStopStartCacheWithDataLoaderNoOverwrite() throws Exception 
{
+        checkStopStartCacheWithDataLoader(false);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testStopStartCacheWithDataLoaderOverwrite() throws Exception {
+        checkStopStartCacheWithDataLoader(true);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void checkStopStartCacheWithDataLoader(final boolean 
allowOverwrite) throws Exception {
+        CacheConfiguration ccfg = new CacheConfiguration();
+
+        ccfg.setCacheMode(CacheMode.PARTITIONED);
+
+        ignite(0).createCache(ccfg);
+
+        final AtomicBoolean stop = new AtomicBoolean();
+
+        IgniteInternalFuture<Object> fut = GridTestUtils.runAsync(new 
Callable<Object>() {
+            /** {@inheritDoc} */
+            @Override
+            public Object call() throws Exception {
+                try (IgniteDataStreamer<Integer, Integer> str = 
ignite(0).dataStreamer(null)) {
+                    str.allowOverwrite(allowOverwrite);
+
+                    int i = 0;
+
+                    while (!stop.get()) {
+                        str.addData(i % 10_000, i).listen(new 
CI1<IgniteFuture<?>>() {
+                            @Override public void apply(IgniteFuture<?> f) {
+                                try {
+                                    f.get();
+                                } catch (IgniteException ignore) {
+                                    // This may be debugged.
+                                }
+                            }
+                        });
+
+                        if (i > 0 && i % 10000 == 0)
+                            info("Added: " + i);
+
+                        i++;
+                    }
+                }
+
+                return null;
+            }
+        });
+
+        Thread.sleep(500);
+
+        ignite(0).destroyCache(null);
+
+        Thread.sleep(500);
+
+        ignite(0).createCache(ccfg);
+
+        stop.set(true);
+
+        fut.get();
+
+        int cnt = 0;
+
+        for (Cache.Entry<Object, Object> ignored : ignite(0).jcache(null))
+            cnt++;
+
+        info(">>> cnt=" + cnt);
+
+        ignite(0).destroyCache(null);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4c5e43b2/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index 208320e..656192f 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -408,6 +408,7 @@ public class IgniteCacheTestSuite extends TestSuite {
         // suite.addTestSuite(IgniteCacheTxPreloadNoWriteTest.class);
 
         suite.addTestSuite(IgniteDynamicCacheStartSelfTest.class);
+        suite.addTestSuite(IgniteCacheDynamicStopSelfTest.class);
 
         return suite;
     }

Reply via email to