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; }