Repository: incubator-ignite Updated Branches: refs/heads/ignite-45 e53947792 -> 9b2a16e69
#IGNITE-45 - Added forClients / forServers Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/9b2a16e6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/9b2a16e6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/9b2a16e6 Branch: refs/heads/ignite-45 Commit: 9b2a16e69766053418a4d809611de520260c297d Parents: e539477 Author: Alexey Goncharuk <agoncha...@gridgain.com> Authored: Mon Mar 16 22:24:14 2015 -0700 Committer: Alexey Goncharuk <agoncha...@gridgain.com> Committed: Mon Mar 16 22:24:14 2015 -0700 ---------------------------------------------------------------------- .../src/main/java/org/apache/ignite/Ignite.java | 23 +++++++++++++ .../org/apache/ignite/cluster/ClusterGroup.java | 18 ++++++++++ .../apache/ignite/internal/IgniteKernal.java | 14 ++++++-- .../internal/cluster/ClusterGroupAdapter.java | 14 ++++++-- .../cluster/IgniteClusterAsyncImpl.java | 10 ++++++ .../ignite/internal/GridProjectionSelfTest.java | 36 ++++++++++++++++---- 6 files changed, 104 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/Ignite.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java b/modules/core/src/main/java/org/apache/ignite/Ignite.java index 7201734..145ab40 100644 --- a/modules/core/src/main/java/org/apache/ignite/Ignite.java +++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java @@ -187,14 +187,37 @@ public interface Ignite extends AutoCloseable { /** * Dynamically starts new cache with the given cache configuration. + * <p> + * If local node is an affinity node, this method will return the instance of started cache. + * Otherwise, it will create a client cache on local node. * * @param cacheCfg Cache configuration to use. + * @return Instance of started cache. */ public <K, V> IgniteCache<K, V> createCache(CacheConfiguration<K, V> cacheCfg); + /** + * Dynamically starts new cache with the given cache configuration. + * <p> + * If local node is an affinity node, this method will return the instance of started cache. + * Otherwise, it will create a near cache with the given configuration on local node. + * + * @param cacheCfg Cache configuration to use. + * @param nearCfg Near cache configuration to use on local node in case it is not an + * affinity node. + * @return Instance of started cache. + */ public <K, V> IgniteCache<K, V> createCache(CacheConfiguration<K, V> cacheCfg, NearCacheConfiguration<K, V> nearCfg); + /** + * Starts a near cache on local node if cache was previously started with one of the + * {@link #createCache(CacheConfiguration)} or {@link #createCache(CacheConfiguration, NearCacheConfiguration)} + * methods. + * + * @param nearCfg Near cache configuration. + * @return Cache instance. + */ public <K, V> IgniteCache<K, V> createCache(NearCacheConfiguration<K, V> nearCfg); /** http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java b/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java index ef6a162..587973d 100644 --- a/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java +++ b/modules/core/src/main/java/org/apache/ignite/cluster/ClusterGroup.java @@ -140,6 +140,24 @@ public interface ClusterGroup { public ClusterGroup forAttribute(String name, @Nullable String val); /** + * Creates a cluster group of nodes started in server mode. + * + * @see Ignition#setClientMode(boolean) + * @see IgniteConfiguration#setClientMode(boolean) + * @return Cluster group of nodes started in server mode. + */ + public ClusterGroup forServers(); + + /** + * Creates a cluster group of nodes started in client mode. + + * @see Ignition#setClientMode(boolean) + * @see IgniteConfiguration#setClientMode(boolean) + * @return Cluster group of nodes started in client mode. + */ + public ClusterGroup forClients(); + + /** * Creates projection for all nodes that have cache with specified name running. * * @param cacheName Cache name. http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/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 43a2386..93e099a 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 @@ -74,7 +74,6 @@ import org.apache.ignite.plugin.*; import org.apache.ignite.spi.*; import org.jetbrains.annotations.*; -import javax.cache.*; import javax.management.*; import java.io.*; import java.lang.management.*; @@ -2255,6 +2254,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { /** {@inheritDoc} */ @Override public <K, V> IgniteCache<K, V> createCache(CacheConfiguration<K, V> cacheCfg) { + A.notNull(cacheCfg, "cacheCfg"); + guard(); try { @@ -2271,8 +2272,13 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { } /** {@inheritDoc} */ - @Override public <K, V> IgniteCache<K, V> createCache(CacheConfiguration<K, V> cacheCfg, - @Nullable NearCacheConfiguration<K, V> nearCfg) { + @Override public <K, V> IgniteCache<K, V> createCache( + CacheConfiguration<K, V> cacheCfg, + NearCacheConfiguration<K, V> nearCfg + ) { + A.notNull(cacheCfg, "cacheCfg"); + A.notNull(nearCfg, "nearCfg"); + guard(); try { @@ -2291,6 +2297,8 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable { /** {@inheritDoc} */ @Override public <K, V> IgniteCache<K, V> createCache(@Nullable NearCacheConfiguration<K, V> nearCfg) { + A.notNull(nearCfg, "nearCfg"); + guard(); try { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java index 632e441..934c0a9 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java @@ -352,6 +352,16 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable { } /** {@inheritDoc} */ + @Override public ClusterGroup forServers() { + return forPredicate(new AttributeFilter(IgniteNodeAttributes.ATTR_CLIENT_MODE, false)); + } + + /** {@inheritDoc} */ + @Override public ClusterGroup forClients() { + return forPredicate(new AttributeFilter(IgniteNodeAttributes.ATTR_CLIENT_MODE, true)); + } + + /** {@inheritDoc} */ @Override public final ClusterGroup forNode(ClusterNode node, ClusterNode... nodes) { A.notNull(node, "node"); @@ -757,13 +767,13 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable { private final String name; /** Value. */ - private final String val; + private final Object val; /** * @param name Name. * @param val Value. */ - private AttributeFilter(String name, String val) { + private AttributeFilter(String name, Object val) { this.name = name; this.val = val; } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java index 960bacd..6dfbdd1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/cluster/IgniteClusterAsyncImpl.java @@ -198,6 +198,16 @@ public class IgniteClusterAsyncImpl extends AsyncSupportAdapter<IgniteCluster> } /** {@inheritDoc} */ + @Override public ClusterGroup forServers() { + return cluster.forServers(); + } + + /** {@inheritDoc} */ + @Override public ClusterGroup forClients() { + return cluster.forClients(); + } + + /** {@inheritDoc} */ @Override public ClusterGroup forCacheNodes(String cacheName) { return cluster.forCacheNodes(cacheName); } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9b2a16e6/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java index 92387a2..1fc5535 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/GridProjectionSelfTest.java @@ -25,7 +25,7 @@ import org.apache.ignite.testframework.junits.common.*; import java.util.*; /** - * Test for {@link org.apache.ignite.cluster.ClusterGroup}. + * Test for {@link ClusterGroup}. */ @GridCommonTest(group = "Kernal Self") public class GridProjectionSelfTest extends GridProjectionAbstractTest { @@ -45,13 +45,20 @@ public class GridProjectionSelfTest extends GridProjectionAbstractTest { ids = new LinkedList<>(); - for (int i = 0; i < NODES_CNT; i++) { - Ignite g = startGrid(i); + try { + for (int i = 0; i < NODES_CNT; i++) { + Ignition.setClientMode(i > 1); - ids.add(g.cluster().localNode().id()); + Ignite g = startGrid(i); - if (i == 0) - ignite = g; + ids.add(g.cluster().localNode().id()); + + if (i == 0) + ignite = g; + } + } + finally { + Ignition.setClientMode(false); } } @@ -142,4 +149,21 @@ public class GridProjectionSelfTest extends GridProjectionAbstractTest { assertEquals(oldest.node(), old); } } + + /** + * @throws Exception If failed. + */ + public void testClientServer() throws Exception { + ClusterGroup srv = ignite.cluster().forServers(); + + assertEquals(2, srv.nodes().size()); + assertTrue(srv.nodes().contains(ignite(0).cluster().localNode())); + assertTrue(srv.nodes().contains(ignite(1).cluster().localNode())); + + ClusterGroup cli = ignite.cluster().forClients(); + + assertEquals(2, srv.nodes().size()); + assertTrue(cli.nodes().contains(ignite(2).cluster().localNode())); + assertTrue(cli.nodes().contains(ignite(3).cluster().localNode())); + } }