You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2017/06/08 12:32:56 UTC
[03/43] ignite git commit: ignite-5075 Implement logical 'cache
groups' sharing the same physical caches
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalWithGroupFullApiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalWithGroupFullApiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalWithGroupFullApiSelfTest.java
new file mode 100644
index 0000000..867a2de
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/local/GridCacheLocalWithGroupFullApiSelfTest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.local;
+
+import org.apache.ignite.configuration.CacheConfiguration;
+
+/**
+ *
+ */
+public class GridCacheLocalWithGroupFullApiSelfTest extends GridCacheLocalFullApiSelfTest {
+ /** {@inheritDoc} */
+ @Override protected CacheConfiguration cacheConfiguration(String igniteInstanceName) throws Exception {
+ CacheConfiguration ccfg = super.cacheConfiguration(igniteInstanceName);
+
+ ccfg.setGroupName("group1");
+
+ return ccfg;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryConcurrentPartitionUpdateTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryConcurrentPartitionUpdateTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryConcurrentPartitionUpdateTest.java
index 9c7c836..6c74f79 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryConcurrentPartitionUpdateTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryConcurrentPartitionUpdateTest.java
@@ -35,6 +35,7 @@ import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
+import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -78,52 +79,74 @@ public class CacheContinuousQueryConcurrentPartitionUpdateTest extends GridCommo
* @throws Exception If failed.
*/
public void testConcurrentUpdatePartitionAtomic() throws Exception {
- concurrentUpdatePartition(ATOMIC);
+ concurrentUpdatePartition(ATOMIC, false);
}
/**
* @throws Exception If failed.
*/
public void testConcurrentUpdatePartitionTx() throws Exception {
- concurrentUpdatePartition(TRANSACTIONAL);
+ concurrentUpdatePartition(TRANSACTIONAL, false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testConcurrentUpdatePartitionAtomicCacheGroup() throws Exception {
+ concurrentUpdatePartition(ATOMIC, true);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testConcurrentUpdatePartitionTxCacheGroup() throws Exception {
+ concurrentUpdatePartition(TRANSACTIONAL, true);
}
/**
* @param atomicityMode Cache atomicity mode.
+ * @param cacheGrp {@code True} if test cache multiple caches in the same group.
* @throws Exception If failed.
*/
- private void concurrentUpdatePartition(CacheAtomicityMode atomicityMode) throws Exception {
+ private void concurrentUpdatePartition(CacheAtomicityMode atomicityMode, boolean cacheGrp) throws Exception {
Ignite srv = startGrid(0);
client = true;
Ignite client = startGrid(1);
- CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
+ List<AtomicInteger> cntrs = new ArrayList<>();
+ List<String> caches = new ArrayList<>();
- ccfg.setWriteSynchronizationMode(FULL_SYNC);
- ccfg.setAtomicityMode(atomicityMode);
+ if (cacheGrp) {
+ for (int i = 0; i < 3; i++) {
+ CacheConfiguration<Object, Object> ccfg = new CacheConfiguration<>(DEFAULT_CACHE_NAME + i);
- IgniteCache clientCache = client.createCache(ccfg);
+ ccfg.setGroupName("testGroup");
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+ ccfg.setAtomicityMode(atomicityMode);
- final AtomicInteger evtCnt = new AtomicInteger();
+ IgniteCache<Object, Object> cache = client.createCache(ccfg);
- ContinuousQuery<Object, Object> qry = new ContinuousQuery<>();
-
- qry.setLocalListener(new CacheEntryUpdatedListener<Object, Object>() {
- @Override public void onUpdated(Iterable<CacheEntryEvent<?, ?>> evts) {
- for (CacheEntryEvent evt : evts) {
- assertNotNull(evt.getKey());
- assertNotNull(evt.getValue());
+ caches.add(cache.getName());
- evtCnt.incrementAndGet();
- }
+ cntrs.add(startListener(cache).get1());
}
- });
+ }
+ else {
+ CacheConfiguration<Object, Object> ccfg = new CacheConfiguration<>(DEFAULT_CACHE_NAME);
- clientCache.query(qry);
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+ ccfg.setAtomicityMode(atomicityMode);
- Affinity<Integer> aff = srv.affinity(DEFAULT_CACHE_NAME);
+ IgniteCache<Object, Object> cache = client.createCache(ccfg);
+
+ caches.add(cache.getName());
+
+ cntrs.add(startListener(cache).get1());
+ }
+
+ Affinity<Integer> aff = srv.affinity(caches.get(0));
final List<Integer> keys = new ArrayList<>();
@@ -143,7 +166,10 @@ public class CacheContinuousQueryConcurrentPartitionUpdateTest extends GridCommo
final int THREADS = 10;
final int UPDATES = 1000;
- final IgniteCache<Object, Object> srvCache = srv.cache(DEFAULT_CACHE_NAME);
+ final List<IgniteCache<Object, Object>> srvCaches = new ArrayList<>();
+
+ for (String cacheName : caches)
+ srvCaches.add(srv.cache(cacheName));
for (int i = 0; i < 15; i++) {
log.info("Iteration: " + i);
@@ -152,60 +178,124 @@ public class CacheContinuousQueryConcurrentPartitionUpdateTest extends GridCommo
@Override public Void call() throws Exception {
ThreadLocalRandom rnd = ThreadLocalRandom.current();
- for (int i = 0; i < UPDATES; i++)
- srvCache.put(keys.get(rnd.nextInt(KEYS)), i);
+ for (int i = 0; i < UPDATES; i++) {
+ for (int c = 0; c < srvCaches.size(); c++)
+ srvCaches.get(c).put(keys.get(rnd.nextInt(KEYS)), i);
+ }
return null;
}
}, THREADS, "update");
- GridTestUtils.waitForCondition(new GridAbsPredicate() {
- @Override public boolean apply() {
- log.info("Events: " + evtCnt.get());
+ for (final AtomicInteger evtCnt : cntrs) {
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ log.info("Events: " + evtCnt.get());
- return evtCnt.get() >= THREADS * UPDATES;
- }
- }, 5000);
+ return evtCnt.get() >= THREADS * UPDATES;
+ }
+ }, 5000);
- assertEquals(THREADS * UPDATES, evtCnt.get());
+ assertEquals(THREADS * UPDATES, evtCnt.get());
- evtCnt.set(0);
+ evtCnt.set(0);
+ }
}
}
/**
+ * @param cache Cache.
+ * @return Event counter.
+ */
+ private T2<AtomicInteger, QueryCursor> startListener(IgniteCache<Object, Object> cache) {
+ final AtomicInteger evtCnt = new AtomicInteger();
+
+ ContinuousQuery<Object, Object> qry = new ContinuousQuery<>();
+
+ qry.setLocalListener(new CacheEntryUpdatedListener<Object, Object>() {
+ @Override public void onUpdated(Iterable<CacheEntryEvent<?, ?>> evts) {
+ for (CacheEntryEvent evt : evts) {
+ assertNotNull(evt.getKey());
+ assertNotNull(evt.getValue());
+
+ if ((Integer)evt.getValue() >= 0)
+ evtCnt.incrementAndGet();
+ }
+ }
+ });
+
+ QueryCursor cur = cache.query(qry);
+
+ return new T2<>(evtCnt, cur);
+ }
+
+ /**
* @throws Exception If failed.
*/
public void testConcurrentUpdatesAndQueryStartAtomic() throws Exception {
- concurrentUpdatesAndQueryStart(ATOMIC);
+ concurrentUpdatesAndQueryStart(ATOMIC, false);
}
/**
* @throws Exception If failed.
*/
public void testConcurrentUpdatesAndQueryStartTx() throws Exception {
- concurrentUpdatesAndQueryStart(TRANSACTIONAL);
+ concurrentUpdatesAndQueryStart(TRANSACTIONAL, false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void _testConcurrentUpdatesAndQueryStartAtomicCacheGroup() throws Exception {
+ concurrentUpdatesAndQueryStart(ATOMIC, true);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void _testConcurrentUpdatesAndQueryStartTxCacheGroup() throws Exception {
+ concurrentUpdatesAndQueryStart(TRANSACTIONAL, true);
}
/**
* @param atomicityMode Cache atomicity mode.
+ * @param cacheGrp {@code True} if test cache multiple caches in the same group.
* @throws Exception If failed.
*/
- private void concurrentUpdatesAndQueryStart(CacheAtomicityMode atomicityMode) throws Exception {
+ private void concurrentUpdatesAndQueryStart(CacheAtomicityMode atomicityMode, boolean cacheGrp) throws Exception {
Ignite srv = startGrid(0);
client = true;
Ignite client = startGrid(1);
- CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
+ List<String> caches = new ArrayList<>();
+
+ if (cacheGrp) {
+ for (int i = 0; i < 3; i++) {
+ CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME + i);
- ccfg.setWriteSynchronizationMode(FULL_SYNC);
- ccfg.setAtomicityMode(atomicityMode);
+ ccfg.setGroupName("testGroup");
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+ ccfg.setAtomicityMode(atomicityMode);
- IgniteCache clientCache = client.createCache(ccfg);
+ IgniteCache cache = client.createCache(ccfg);
- Affinity<Integer> aff = srv.affinity(DEFAULT_CACHE_NAME);
+ caches.add(cache.getName());
+ }
+ }
+ else {
+ CacheConfiguration ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME);
+
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+ ccfg.setAtomicityMode(atomicityMode);
+
+ IgniteCache cache = client.createCache(ccfg);
+
+ caches.add(cache.getName());
+ }
+
+ Affinity<Integer> aff = srv.affinity(caches.get(0));
final List<Integer> keys = new ArrayList<>();
@@ -225,38 +315,27 @@ public class CacheContinuousQueryConcurrentPartitionUpdateTest extends GridCommo
final int THREADS = 10;
final int UPDATES = 1000;
- for (int i = 0; i < 5; i++) {
- log.info("Iteration: " + i);
-
- ContinuousQuery<Object, Object> qry = new ContinuousQuery<>();
-
- final AtomicInteger evtCnt = new AtomicInteger();
-
- qry.setLocalListener(new CacheEntryUpdatedListener<Object, Object>() {
- @Override public void onUpdated(Iterable<CacheEntryEvent<?, ?>> evts) {
- for (CacheEntryEvent evt : evts) {
- assertNotNull(evt.getKey());
- assertNotNull(evt.getValue());
+ final List<IgniteCache<Object, Object>> srvCaches = new ArrayList<>();
- if ((Integer)evt.getValue() >= 0)
- evtCnt.incrementAndGet();
- }
- }
- });
-
- QueryCursor cur;
+ for (String cacheName : caches)
+ srvCaches.add(srv.cache(cacheName));
- final IgniteCache<Object, Object> srvCache = srv.cache(DEFAULT_CACHE_NAME);
+ for (int i = 0; i < 5; i++) {
+ log.info("Iteration: " + i);
final AtomicBoolean stop = new AtomicBoolean();
+ List<T2<AtomicInteger, QueryCursor> > qrys = new ArrayList<>();
+
try {
IgniteInternalFuture fut = GridTestUtils.runMultiThreadedAsync(new Callable<Void>() {
@Override public Void call() throws Exception {
ThreadLocalRandom rnd = ThreadLocalRandom.current();
- while (!stop.get())
- srvCache.put(keys.get(rnd.nextInt(KEYS)), rnd.nextInt(100) - 200);
+ while (!stop.get()) {
+ for (IgniteCache<Object, Object> srvCache : srvCaches)
+ srvCache.put(keys.get(rnd.nextInt(KEYS)), rnd.nextInt(100) - 200);
+ }
return null;
}
@@ -264,7 +343,8 @@ public class CacheContinuousQueryConcurrentPartitionUpdateTest extends GridCommo
U.sleep(1000);
- cur = clientCache.query(qry);
+ for (String cache : caches)
+ qrys.add(startListener(client.cache(cache)));
U.sleep(1000);
@@ -280,25 +360,30 @@ public class CacheContinuousQueryConcurrentPartitionUpdateTest extends GridCommo
@Override public Void call() throws Exception {
ThreadLocalRandom rnd = ThreadLocalRandom.current();
- for (int i = 0; i < UPDATES; i++)
- srvCache.put(keys.get(rnd.nextInt(KEYS)), i);
+ for (int i = 0; i < UPDATES; i++) {
+ for (IgniteCache<Object, Object> srvCache : srvCaches)
+ srvCache.put(keys.get(rnd.nextInt(KEYS)), i);
+ }
return null;
}
}, THREADS, "update");
+ for (T2<AtomicInteger, QueryCursor> qry : qrys) {
+ final AtomicInteger evtCnt = qry.get1();
- GridTestUtils.waitForCondition(new GridAbsPredicate() {
- @Override public boolean apply() {
- log.info("Events: " + evtCnt.get());
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ log.info("Events: " + evtCnt.get());
- return evtCnt.get() >= THREADS * UPDATES;
- }
- }, 5000);
+ return evtCnt.get() >= THREADS * UPDATES;
+ }
+ }, 5000);
- assertEquals(THREADS * UPDATES, evtCnt.get());
+ assertEquals(THREADS * UPDATES, qry.get1().get());
- cur.close();
+ qry.get2().close();
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
index 2fb7fcb..54791d7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
@@ -2243,13 +2243,11 @@ public abstract class CacheContinuousQueryFailoverAbstractSelfTest extends GridC
* @throws Exception If failed.
*/
public void testNoEventLossOnTopologyChange() throws Exception {
- final int stableNodeCnt = 1;
-
final int batchLoadSize = 2000;
final int restartCycles = 5;
- Ignite qryClient = startGridsMultiThreaded(stableNodeCnt);
+ Ignite qryClient = startGrid(0);
final CacheEventListener4 lsnr = new CacheEventListener4(atomicityMode() == CacheAtomicityMode.ATOMIC);
@@ -2282,7 +2280,7 @@ public abstract class CacheContinuousQueryFailoverAbstractSelfTest extends GridC
log.info("Batch loaded. Iteration: " + iteration);
- final long expCnt = putCnt * stableNodeCnt + ignoredDupEvts;
+ final long expCnt = putCnt + ignoredDupEvts;
GridTestUtils.waitForCondition(new GridAbsPredicate() {
@Override public boolean apply() {
@@ -2316,7 +2314,6 @@ public abstract class CacheContinuousQueryFailoverAbstractSelfTest extends GridC
String msg = sb.toString();
// In atomic mode CQ can receive duplicate update events if update retried after fails.
- // E.g. topology change
if (atomicityMode() == CacheAtomicityMode.ATOMIC && msg.isEmpty() && cnt > expCnt)
ignoredDupEvts += cnt - expCnt;
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
index b48c4ba..1573576 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxOptimisticDeadlockDetectionTest.java
@@ -399,7 +399,7 @@ public class TxOptimisticDeadlockDetectionTest extends GridCommonAbstractTest {
KeyCacheObject keyCacheObj = intCache.context().toCacheKeyObject(key0);
- GridCacheMapEntry entry = map.getEntry(keyCacheObj);
+ GridCacheMapEntry entry = map.getEntry(intCache.context(), keyCacheObj);
if (entry != null)
assertNull("Entry still has locks " + entry, entry.mvccAllLocal());
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
index bc297a2..61f7125 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPessimisticDeadlockDetectionTest.java
@@ -408,7 +408,7 @@ public class TxPessimisticDeadlockDetectionTest extends GridCommonAbstractTest {
KeyCacheObject keyCacheObj = intCache.context().toCacheKeyObject(key0);
- GridCacheMapEntry entry = map.getEntry(keyCacheObj);
+ GridCacheMapEntry entry = map.getEntry(intCache.context(), keyCacheObj);
if (entry != null)
assertNull("Entry still has locks " + entry, entry.mvccAllLocal());
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
index 2096179..44a075e 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridCacheTestContext.java
@@ -79,14 +79,11 @@ public class GridCacheTestContext<K, V> extends GridCacheContext<K, V> {
null
),
defaultCacheConfiguration(),
+ null,
CacheType.USER,
AffinityTopologyVersion.ZERO,
- UUID.randomUUID(),
true,
true,
- null,
- null,
- null,
new GridCacheEventManager(),
new CacheOsStoreManager(null, new CacheConfiguration()),
new GridCacheEvictionManager(),
@@ -95,7 +92,6 @@ public class GridCacheTestContext<K, V> extends GridCacheContext<K, V> {
new CacheDataStructuresManager(),
new GridCacheTtlManager(),
new GridOsCacheDrManager(),
- null,
new CacheOsConflictResolutionManager<K, V>(),
new CachePluginManager(ctx, new CacheConfiguration()),
new GridCacheAffinityManager()
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
index 25ff2fd..4a6b765 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/GridCacheMessageSelfTest.java
@@ -216,6 +216,16 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
+ @Override public int handlerId() {
+ return 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean cacheGroupMessage() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean addDeploymentInfo() {
return false;
}
@@ -311,6 +321,16 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
+ @Override public int handlerId() {
+ return 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean cacheGroupMessage() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean addDeploymentInfo() {
return false;
}
@@ -434,6 +454,16 @@ public class GridCacheMessageSelfTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
+ @Override public int handlerId() {
+ return 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean cacheGroupMessage() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean addDeploymentInfo() {
return false;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 1f096e4..a5a2401 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -68,6 +68,7 @@ import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryEnumCache;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.CacheGroupContext;
import org.apache.ignite.internal.processors.resource.GridSpringResourceContext;
import org.apache.ignite.internal.util.GridClassLoaderCache;
import org.apache.ignite.internal.util.GridTestClockTimer;
@@ -2117,6 +2118,22 @@ public abstract class GridAbstractTest extends TestCase {
}
/**
+ * @param node Node.
+ * @param cacheName Cache name.
+ * @return Cache group ID for given cache name.
+ */
+ protected final int groupIdForCache(Ignite node, String cacheName) {
+ for (CacheGroupContext grp : ((IgniteKernal)node).context().cache().cacheGroups()) {
+ if (grp.hasCache(cacheName))
+ return grp.groupId();
+ }
+
+ fail("Failed to find group for cache: " + cacheName);
+
+ return 0;
+ }
+
+ /**
*
*/
private static interface WriteReplaceOwner {
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index cf68c3c..306e298 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -65,6 +65,8 @@ import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.affinity.GridAffinityFunctionContextImpl;
+import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
+import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheExplicitLockSpan;
@@ -1731,4 +1733,66 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
return U.field(tm, "completedVersHashMap");
}
+
+ /**
+ *
+ */
+ protected final void checkCacheDiscoveryDataConsistent() {
+ Map<Integer, CacheGroupDescriptor> cacheGrps = null;
+ Map<String, DynamicCacheDescriptor> caches = null;
+
+ for (Ignite node : G.allGrids()) {
+ Map<Integer, CacheGroupDescriptor> cacheGrps0 =
+ ((IgniteKernal)node).context().cache().cacheGroupDescriptors();
+ Map<String, DynamicCacheDescriptor> caches0 =
+ ((IgniteKernal)node).context().cache().cacheDescriptors();
+
+ assertNotNull(cacheGrps0);
+ assertNotNull(caches0);
+
+ if (cacheGrps == null) {
+ cacheGrps = cacheGrps0;
+ caches = caches0;
+ }
+ else {
+ assertEquals(cacheGrps.size(), cacheGrps0.size());
+
+ for (Map.Entry<Integer, CacheGroupDescriptor> e : cacheGrps.entrySet()) {
+ CacheGroupDescriptor desc = e.getValue();
+ CacheGroupDescriptor desc0 = cacheGrps0.get(e.getKey());
+
+ assertNotNull(desc0);
+ checkGroupDescriptorsData(desc, desc0);
+ }
+
+ for (Map.Entry<String, DynamicCacheDescriptor> e : caches.entrySet()) {
+ DynamicCacheDescriptor desc = e.getValue();
+ DynamicCacheDescriptor desc0 = caches.get(e.getKey());
+
+ assertNotNull(desc0);
+ assertEquals(desc.deploymentId(), desc0.deploymentId());
+ assertEquals(desc.receivedFrom(), desc0.receivedFrom());
+ assertEquals(desc.startTopologyVersion(), desc0.startTopologyVersion());
+ assertEquals(desc.cacheConfiguration().getName(), desc0.cacheConfiguration().getName());
+ assertEquals(desc.cacheConfiguration().getGroupName(), desc0.cacheConfiguration().getGroupName());
+ checkGroupDescriptorsData(desc.groupDescriptor(), desc0.groupDescriptor());
+ }
+ }
+ }
+ }
+
+ /**
+ * @param desc First descriptor.
+ * @param desc0 Second descriptor.
+ */
+ private void checkGroupDescriptorsData(CacheGroupDescriptor desc, CacheGroupDescriptor desc0) {
+ assertEquals(desc.groupName(), desc0.groupName());
+ assertEquals(desc.sharedGroup(), desc0.sharedGroup());
+ assertEquals(desc.deploymentId(), desc0.deploymentId());
+ assertEquals(desc.receivedFrom(), desc0.receivedFrom());
+ assertEquals(desc.startTopologyVersion(), desc0.startTopologyVersion());
+ assertEquals(desc.config().getName(), desc0.config().getName());
+ assertEquals(desc.config().getGroupName(), desc0.config().getGroupName());
+ assertEquals(desc.caches(), desc0.caches());
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
index 710b2a1..11a4a10 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFullApiSelfTestSuite.java
@@ -28,6 +28,7 @@ import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePart
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledMultiNodeP2PDisabledFullApiSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledMultiNodeWithGroupFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledOnheapFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledOnheapMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.CachePartitionedMultiNodeLongTxTimeoutFullApiTest;
@@ -38,7 +39,9 @@ import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAto
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicLateAffDisabledMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicMultiNodeP2PDisabledFullApiSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicMultiNodeWithGroupFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearEnabledMultiNodeFullApiSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearEnabledMultiNodeWithGroupFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearOnlyMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearOnlyMultiNodeP2PDisabledFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicOnheapFullApiSelfTest;
@@ -58,6 +61,7 @@ import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePar
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeCounterSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeP2PDisabledFullApiSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeWithGroupFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNearOnlyNoPrimaryFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedOnheapFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedOnheapMultiNodeFullApiSelfTest;
@@ -71,8 +75,10 @@ import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCa
import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedMultiNodeP2PDisabledFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedNearOnlyMultiNodeFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.local.GridCacheLocalAtomicFullApiSelfTest;
+import org.apache.ignite.internal.processors.cache.local.GridCacheLocalAtomicWithGroupFullApiSelfTest;
import org.apache.ignite.internal.processors.cache.local.GridCacheLocalFullApiMultithreadedSelfTest;
import org.apache.ignite.internal.processors.cache.local.GridCacheLocalFullApiSelfTest;
+import org.apache.ignite.internal.processors.cache.local.GridCacheLocalWithGroupFullApiSelfTest;
/**
* Test suite for cache API.
@@ -161,6 +167,13 @@ public class IgniteCacheFullApiSelfTestSuite extends TestSuite {
// Other.
suite.addTestSuite(GridCacheClearSelfTest.class);
+ suite.addTestSuite(GridCacheLocalWithGroupFullApiSelfTest.class);
+ suite.addTestSuite(GridCacheLocalAtomicWithGroupFullApiSelfTest.class);
+ suite.addTestSuite(GridCacheAtomicMultiNodeWithGroupFullApiSelfTest.class);
+ suite.addTestSuite(GridCacheAtomicNearEnabledMultiNodeWithGroupFullApiSelfTest.class);
+ suite.addTestSuite(GridCachePartitionedMultiNodeWithGroupFullApiSelfTest.class);
+ suite.addTestSuite(GridCachePartitionedNearDisabledMultiNodeWithGroupFullApiSelfTest.class);
+
return suite;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
index 222ac30..f0c0c5a 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
@@ -32,6 +32,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheValueConsistencyTran
import org.apache.ignite.internal.processors.cache.GridCacheValueConsistencyTransactionalSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheVersionSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheVersionTopologyChangeTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheInterceptorSelfTestSuite;
import org.apache.ignite.internal.processors.cache.IgniteCacheScanPredicateDeploymentSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheAsyncOperationsTest;
@@ -195,6 +196,8 @@ public class IgniteCacheTestSuite3 extends TestSuite {
suite.addTestSuite(CacheAsyncOperationsTest.class);
+ suite.addTestSuite(IgniteCacheGroupsTest.class);
+
return suite;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
index 7baea2e..18b9258 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.processors.cache.PartitionsExchangeOnDiscovery
import org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentNodeJoinValidationTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteActiveOnStartNodeJoinValidationSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheGroupsPartitionLossPolicySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCachePartitionLossPolicySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxIteratorSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.IgniteCacheAtomicProtocolTest;
@@ -73,6 +74,7 @@ public class IgniteCacheTestSuite5 extends TestSuite {
suite.addTestSuite(ClusterStatePartitionedSelfTest.class);
suite.addTestSuite(ClusterStateReplicatedSelfTest.class);
suite.addTestSuite(IgniteCachePartitionLossPolicySelfTest.class);
+ suite.addTestSuite(IgniteCacheGroupsPartitionLossPolicySelfTest.class);
suite.addTestSuite(CacheRebalancingSelfTest.class);
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteTopologyValidatorTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteTopologyValidatorTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteTopologyValidatorTestSuite.java
index 58c754e..1c9b852 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteTopologyValidatorTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteTopologyValidatorTestSuite.java
@@ -19,11 +19,17 @@ package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest;
+import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorNearPartitionedAtomicCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorNearPartitionedAtomicCacheTest;
+import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorNearPartitionedTxCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorNearPartitionedTxCacheTest;
+import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorPartitionedAtomicCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorPartitionedAtomicCacheTest;
+import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorPartitionedTxCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorPartitionedTxCacheTest;
+import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorReplicatedAtomicCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorReplicatedAtomicCacheTest;
+import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorReplicatedTxCacheGroupsTest;
import org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorReplicatedTxCacheTest;
/**
@@ -43,6 +49,14 @@ public class IgniteTopologyValidatorTestSuite extends TestSuite {
suite.addTest(new TestSuite(IgniteTopologyValidatorPartitionedTxCacheTest.class));
suite.addTest(new TestSuite(IgniteTopologyValidatorReplicatedAtomicCacheTest.class));
suite.addTest(new TestSuite(IgniteTopologyValidatorReplicatedTxCacheTest.class));
+
+ suite.addTest(new TestSuite(IgniteTopologyValidatorNearPartitionedAtomicCacheGroupsTest.class));
+ suite.addTest(new TestSuite(IgniteTopologyValidatorNearPartitionedTxCacheGroupsTest.class));
+ suite.addTest(new TestSuite(IgniteTopologyValidatorPartitionedAtomicCacheGroupsTest.class));
+ suite.addTest(new TestSuite(IgniteTopologyValidatorPartitionedTxCacheGroupsTest.class));
+ suite.addTest(new TestSuite(IgniteTopologyValidatorReplicatedAtomicCacheGroupsTest.class));
+ suite.addTest(new TestSuite(IgniteTopologyValidatorReplicatedTxCacheGroupsTest.class));
+
suite.addTest(new TestSuite(IgniteTopologyValidatorGridSplitCacheTest.class));
return suite;
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
index 7caf354..0440615 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
@@ -108,7 +108,7 @@ public class H2PkHashIndex extends GridH2IndexBase {
List<GridCursor<? extends CacheDataRow>> cursors = new ArrayList<>();
for (IgniteCacheOffheapManager.CacheDataStore store : cctx.offheap().cacheDataStores())
- cursors.add(store.cursor(lowerObj, upperObj));
+ cursors.add(store.cursor(cctx.cacheId(), lowerObj, upperObj));
return new H2Cursor(new CompositeGridCursor<>(cursors.iterator()), p);
}
@@ -126,7 +126,7 @@ public class H2PkHashIndex extends GridH2IndexBase {
@Override public GridH2Row findOne(GridH2Row row) {
try {
for (IgniteCacheOffheapManager.CacheDataStore store : cctx.offheap().cacheDataStores()) {
- CacheDataRow found = store.find(row.key);
+ CacheDataRow found = store.find(cctx, row.key);
if (found != null)
tbl.rowDescriptor().createRow(row.key(), row.partition(), row.value(), row.version(), 0);
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
index 2024c36..86b2749 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
@@ -59,7 +59,7 @@ public class H2RowFactory {
final CacheDataRowAdapter rowBuilder = new CacheDataRowAdapter(link);
- rowBuilder.initFromLink(cctx, CacheDataRowAdapter.RowData.FULL);
+ rowBuilder.initFromLink(cctx.group(), CacheDataRowAdapter.RowData.FULL);
GridH2Row row;
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2Tree.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2Tree.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2Tree.java
index f673717..f2b8bad 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2Tree.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2Tree.java
@@ -63,7 +63,7 @@ public abstract class H2Tree extends BPlusTree<SearchRow, GridH2Row> {
/**
* @param name Tree name.
* @param reuseList Reuse list.
- * @param cacheId Cache ID.
+ * @param grpId Cache group ID.
* @param pageMem Page memory.
* @param wal Write ahead log manager.
* @param rowStore Row data store.
@@ -74,7 +74,7 @@ public abstract class H2Tree extends BPlusTree<SearchRow, GridH2Row> {
protected H2Tree(
String name,
ReuseList reuseList,
- int cacheId,
+ int grpId,
PageMemory pageMem,
IgniteWriteAheadLogManager wal,
AtomicLong globalRmvId,
@@ -85,7 +85,7 @@ public abstract class H2Tree extends BPlusTree<SearchRow, GridH2Row> {
List<InlineIndexHelper> inlineIdxs,
int inlineSize
) throws IgniteCheckedException {
- super(name, cacheId, pageMem, wal, globalRmvId, metaPageId, reuseList);
+ super(name, grpId, pageMem, wal, globalRmvId, metaPageId, reuseList);
if (!initNew) {
// Page is ready - read inline size from it.
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
index c1c1d9c..0cfb6a0 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2TreeIndex.java
@@ -100,8 +100,6 @@ public class H2TreeIndex extends GridH2IndexBase {
name = BPlusTree.treeName(name, "H2Tree");
if (cctx.affinityNode()) {
- IgniteCacheDatabaseSharedManager dbMgr = cctx.shared().database();
-
inlineIdxs = getAvailableInlineColumns(cols);
segments = new H2Tree[segmentsCnt];
@@ -110,8 +108,9 @@ public class H2TreeIndex extends GridH2IndexBase {
RootPage page = getMetaPage(name, i);
segments[i] = new H2Tree(
- name,cctx.offheap().reuseListForIndex(name),
- cctx.cacheId(),
+ name,
+ cctx.offheap().reuseListForIndex(name),
+ cctx.groupId(),
cctx.memoryPolicy().pageMemory(),
cctx.shared().wal(),
cctx.offheap().globalRemoveId(),
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
index fb2129b..060636b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/ddl/DdlStatementsProcessor.java
@@ -171,7 +171,7 @@ public class DdlStatementsProcessor {
ccfg.setSqlSchema(cmd.schemaName());
SchemaOperationException err =
- QueryUtils.checkQueryEntityConflicts(ccfg, ctx.cache().cacheDescriptors());
+ QueryUtils.checkQueryEntityConflicts(ccfg, ctx.cache().cacheDescriptors().values());
if (err != null)
throw err;
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index f05fa5b..b85fa61 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -1026,12 +1026,12 @@ public class GridReduceQueryExecutor {
}
/**
- * @param cacheName Cache name.
+ * @param grpId Cache group ID.
* @param topVer Topology version.
* @return Collection of data nodes.
*/
- private Collection<ClusterNode> dataNodes(String cacheName, AffinityTopologyVersion topVer) {
- Collection<ClusterNode> res = ctx.discovery().cacheAffinityNodes(cacheName, topVer);
+ private Collection<ClusterNode> dataNodes(int grpId, AffinityTopologyVersion topVer) {
+ Collection<ClusterNode> res = ctx.discovery().cacheGroupAffinityNodes(grpId, topVer);
return res != null ? res : Collections.<ClusterNode>emptySet();
}
@@ -1047,7 +1047,7 @@ public class GridReduceQueryExecutor {
String cacheName = cctx.name();
- Set<ClusterNode> dataNodes = new HashSet<>(dataNodes(cacheName, NONE));
+ Set<ClusterNode> dataNodes = new HashSet<>(dataNodes(cctx.groupId(), NONE));
if (dataNodes.isEmpty())
throw new CacheException("Failed to find data nodes for cache: " + cacheName);
@@ -1110,7 +1110,7 @@ public class GridReduceQueryExecutor {
continue;
}
- else if (!F.isEmpty(dataNodes(cctx.name(), NONE)))
+ else if (!F.isEmpty(dataNodes(cctx.groupId(), NONE)))
return null; // Retry.
throw new CacheException("Failed to find data nodes [cache=" + cctx.name() + ", part=" + p + "]");
@@ -1139,7 +1139,7 @@ public class GridReduceQueryExecutor {
continue; // Skip unmapped partitions.
if (F.isEmpty(owners)) {
- if (!F.isEmpty(dataNodes(extraCctx.name(), NONE)))
+ if (!F.isEmpty(dataNodes(extraCctx.groupId(), NONE)))
return null; // Retry.
throw new CacheException("Failed to find data nodes [cache=" + extraCctx.name() +
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsSqlTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsSqlTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsSqlTest.java
new file mode 100644
index 0000000..a7c81fd
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheGroupsSqlTest.java
@@ -0,0 +1,312 @@
+/*
+ * 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 java.io.Serializable;
+import java.util.List;
+import java.util.concurrent.Callable;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.QueryIndex;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cache.query.SqlFieldsQuery;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.AffinityKey;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.apache.ignite.transactions.Transaction;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.CacheMode.REPLICATED;
+import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
+
+/**
+ *
+ */
+public class IgniteCacheGroupsSqlTest extends GridCommonAbstractTest {
+ /** */
+ private static final TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+ /** */
+ private static final String GROUP1 = "grp1";
+
+ /** */
+ private static final String GROUP2 = "grp2";
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+ ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ startGridsMultiThreaded(3);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+
+ super.afterTest();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testSqlQuery() throws Exception {
+ Ignite node = ignite(0);
+
+ IgniteCache c1 = node.createCache(personCacheConfiguration(GROUP1, "c1"));
+ IgniteCache c2 = node.createCache(personCacheConfiguration(GROUP1, "c2"));
+
+ SqlFieldsQuery qry = new SqlFieldsQuery("select name from Person where name=?");
+ qry.setArgs("p1");
+
+ assertEquals(0, c1.query(qry).getAll().size());
+ assertEquals(0, c2.query(qry).getAll().size());
+
+ c1.put(1, new Person("p1"));
+
+ assertEquals(1, c1.query(qry).getAll().size());
+ assertEquals(0, c2.query(qry).getAll().size());
+
+ c2.put(2, new Person("p1"));
+
+ assertEquals(1, c1.query(qry).getAll().size());
+ assertEquals(1, c2.query(qry).getAll().size());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinQuery1() throws Exception {
+ joinQuery(GROUP1, GROUP2, REPLICATED, PARTITIONED, TRANSACTIONAL, TRANSACTIONAL);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinQuery2() throws Exception {
+ GridTestUtils.assertThrows(log, new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ joinQuery(GROUP1, GROUP1, REPLICATED, PARTITIONED, TRANSACTIONAL, TRANSACTIONAL);
+ return null;
+ }
+ }, IgniteCheckedException.class, "Cache mode mismatch for caches related to the same group");
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinQuery3() throws Exception {
+ joinQuery(GROUP1, GROUP1, PARTITIONED, PARTITIONED, TRANSACTIONAL, ATOMIC);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinQuery4() throws Exception {
+ joinQuery(GROUP1, GROUP1, REPLICATED, REPLICATED, ATOMIC, TRANSACTIONAL);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinQuery5() throws Exception {
+ joinQuery(GROUP1, null, REPLICATED, PARTITIONED, TRANSACTIONAL, TRANSACTIONAL);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testJoinQuery6() throws Exception {
+ joinQuery(GROUP1, null, PARTITIONED, PARTITIONED, TRANSACTIONAL, ATOMIC);
+ }
+
+ /**
+ * @param grp1 First cache group.
+ * @param grp2 Second cache group.
+ * @param cm1 First cache mode.
+ * @param cm2 Second cache mode.
+ * @param cam1 First cache atomicity mode.
+ * @param cam2 Second cache atomicity mode.
+ * @throws Exception If failed.
+ */
+ private void joinQuery(String grp1, String grp2, CacheMode cm1,
+ CacheMode cm2, CacheAtomicityMode cam1, CacheAtomicityMode cam2) throws Exception {
+ int keys = 1000;
+ int accsPerPerson = 4;
+
+ Ignite srv0 = ignite(0);
+
+ IgniteCache pers = srv0.createCache(personCacheConfiguration(grp1, "pers")
+ .setAffinity(new RendezvousAffinityFunction().setPartitions(10))
+ .setCacheMode(cm1)
+ .setAtomicityMode(cam1));
+
+ IgniteCache acc = srv0.createCache(accountCacheConfiguration(grp2, "acc")
+ .setAffinity(new RendezvousAffinityFunction().setPartitions(10))
+ .setCacheMode(cm2)
+ .setAtomicityMode(cam2));
+
+ try(Transaction tx = cam1 == TRANSACTIONAL || cam2 == TRANSACTIONAL ? srv0.transactions().txStart() : null) {
+ for (int i = 0; i < keys; i++) {
+
+ int pKey = i - (i % accsPerPerson);
+
+ if (i % accsPerPerson == 0)
+ pers.put(pKey, new Person("pers-" + pKey));
+
+
+ acc.put(new AffinityKey(i, pKey), new Account(pKey, "acc-" + i));
+ }
+
+ if (tx != null)
+ tx.commit();
+ }
+
+ Ignite node = ignite(2);
+
+ SqlFieldsQuery qry = new SqlFieldsQuery(
+ "select p._key as p_key, p.name, a._key as a_key, a.personId, a.attr \n" +
+ "from \"pers\".Person p inner join \"acc\".Account a \n" +
+ "on (p._key = a.personId)");
+
+ IgniteCache<Object, Object> cache = node.cache("acc");
+
+ List<List<?>> res = cache.query(qry).getAll();
+
+ assertEquals(keys, res.size());
+
+ for (List<?> row : res)
+ assertEquals(row.get(0), row.get(3));
+ }
+
+ /**
+ * @param grpName Group name.
+ * @param cacheName Cache name.
+ * @return Person cache configuration.
+ */
+ private CacheConfiguration personCacheConfiguration(String grpName, String cacheName) {
+ QueryEntity entity = new QueryEntity();
+
+ entity.setKeyType(Integer.class.getName());
+ entity.setValueType(Person.class.getName());
+ entity.addQueryField("name", String.class.getName(), null);
+
+ return cacheConfiguration(grpName, cacheName, entity);
+ }
+
+ /**
+ * @param grpName Group name.
+ * @param cacheName Cache name.
+ * @return Account cache configuration.
+ */
+ private CacheConfiguration accountCacheConfiguration(String grpName, String cacheName) {
+ QueryEntity entity = new QueryEntity();
+
+ entity.setKeyType(AffinityKey.class.getName());
+ entity.setValueType(Account.class.getName());
+ entity.addQueryField("personId", Integer.class.getName(), null);
+ entity.addQueryField("attr", String.class.getName(), null);
+ entity.setIndexes(F.asList(new QueryIndex("personId")));
+
+ return cacheConfiguration(grpName, cacheName, entity);
+ }
+
+ /**
+ * @param grpName Group name.
+ * @param cacheName Cache name.
+ * @param queryEntity Query entity.
+ * @return Cache configuration.
+ */
+ private CacheConfiguration cacheConfiguration(String grpName, String cacheName, QueryEntity queryEntity) {
+ CacheConfiguration ccfg = new CacheConfiguration();
+
+ ccfg.setWriteSynchronizationMode(FULL_SYNC);
+ ccfg.setGroupName(grpName);
+ ccfg.setName(cacheName);
+
+ ccfg.setQueryEntities(F.asList(queryEntity));
+
+ return ccfg;
+ }
+
+ /**
+ *
+ */
+ private static class Person implements Serializable {
+ /** */
+ String name;
+
+ /**
+ * @param name Name.
+ */
+ public Person(String name) {
+ this.name = name;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(Person.class, this);
+ }
+ }
+
+ /**
+ *
+ */
+ private static class Account implements Serializable {
+ /** */
+ Integer personId;
+
+ /** */
+ String attr;
+
+ /**
+ * @param personId Person ID.
+ * @param attr Attribute (some data).
+ */
+ public Account(Integer personId, String attr) {
+ this.personId = personId;
+ this.attr = attr;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(Account.class, this);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
index b03e948..50d6de4 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheNoClassQuerySelfTest.java
@@ -20,13 +20,10 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashMap;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.cache.QueryIndex;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
@@ -44,23 +41,6 @@ public class IgniteCacheNoClassQuerySelfTest extends GridCommonAbstractTest {
/** */
private static final TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
- /** */
- protected Ignite ignite;
-
- /**
- * @return Atomicity mode.
- */
- protected CacheAtomicityMode atomicityMode() {
- return TRANSACTIONAL;
- }
-
- /**
- * @return Distribution.
- */
- protected NearCacheConfiguration nearCacheConfiguration() {
- return new NearCacheConfiguration();
- }
-
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsCompareQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsCompareQueryTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsCompareQueryTest.java
new file mode 100644
index 0000000..5875ee1
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsCompareQueryTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.query;
+
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.processors.query.h2.sql.BaseH2CompareQueryTest;
+
+/**
+ *
+ */
+public class IgniteCacheGroupsCompareQueryTest extends BaseH2CompareQueryTest {
+ /**
+ * Creates new cache configuration.
+ *
+ * @param name Cache name.
+ * @param mode Cache mode.
+ * @param clsK Key class.
+ * @param clsV Value class.
+ * @return Cache configuration.
+ */
+ @Override protected CacheConfiguration cacheConfiguration(String name, CacheMode mode, Class<?> clsK, Class<?> clsV) {
+ CacheConfiguration<?,?> cc = super.cacheConfiguration(name, mode, clsK, clsV);
+
+ if (ORG.equals(name) || PERS.equals(name) || PURCH.equals(name))
+ cc.setGroupName("group");
+
+ return cc;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlDistributedJoinSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlDistributedJoinSelfTest.java
new file mode 100644
index 0000000..452c6cf
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlDistributedJoinSelfTest.java
@@ -0,0 +1,30 @@
+/*
+ * 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.query;
+
+import org.apache.ignite.configuration.CacheConfiguration;
+
+/**
+ *
+ */
+public class IgniteCacheGroupsSqlDistributedJoinSelfTest extends IgniteSqlDistributedJoinSelfTest {
+ /** {@inheritDoc} */
+ @Override protected CacheConfiguration cacheConfig(String name, boolean partitioned, Class<?>[] idxTypes) {
+ return super.cacheConfig(name, partitioned, idxTypes).setGroupName("group");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest.java
new file mode 100644
index 0000000..6e535f1
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest.java
@@ -0,0 +1,28 @@
+/*
+ * 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.query;
+
+/**
+ *
+ */
+public class IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest extends IgniteCacheGroupsSqlSegmentedIndexSelfTest {
+ /** {@inheritDoc} */
+ @Override protected int nodesCount() {
+ return 4;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexSelfTest.java
new file mode 100644
index 0000000..c0a4fb2
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCacheGroupsSqlSegmentedIndexSelfTest.java
@@ -0,0 +1,37 @@
+/*
+ * 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.query;
+
+import org.apache.ignite.configuration.CacheConfiguration;
+
+/**
+ *
+ */
+public class IgniteCacheGroupsSqlSegmentedIndexSelfTest extends IgniteSqlSegmentedIndexSelfTest {
+ /** {@inheritDoc} */
+ @Override protected <K, V> CacheConfiguration<K, V> cacheConfig(String name, boolean partitioned, Class<?>... idxTypes) {
+ return super.<K, V>cacheConfig(name, partitioned, idxTypes).setGroupName("group");
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Override public void testSegmentedPartitionedWithReplicated() throws Exception {
+ log.info("Test is ignored");
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
index aad4cfb..93fcdb3 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlDistributedJoinSelfTest.java
@@ -77,7 +77,7 @@ public class IgniteSqlDistributedJoinSelfTest extends GridCommonAbstractTest {
* @param idxTypes Indexed types.
* @return Cache configuration.
*/
- private static CacheConfiguration cacheConfig(String name, boolean partitioned, Class<?>... idxTypes) {
+ protected CacheConfiguration cacheConfig(String name, boolean partitioned, Class<?>... idxTypes) {
return new CacheConfiguration(DEFAULT_CACHE_NAME)
.setName(name)
.setCacheMode(partitioned ? CacheMode.PARTITIONED : CacheMode.REPLICATED)
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
index 9a3f64d..f9d25d6 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
@@ -60,6 +60,21 @@ public class BaseH2CompareQueryTest extends AbstractH2CompareQueryTest {
/** Purchase count. */
public static final int PURCH_CNT = PROD_CNT * 5;
+ /** */
+ protected static final String ORG = "org";
+
+ /** */
+ protected static final String PERS = "pers";
+
+ /** */
+ protected static final String PURCH = "purch";
+
+ /** */
+ protected static final String PROD = "prod";
+
+ /** */
+ protected static final String ADDR = "addr";
+
/** Cache org. */
private static IgniteCache<Integer, Organization> cacheOrg;
@@ -80,11 +95,11 @@ public class BaseH2CompareQueryTest extends AbstractH2CompareQueryTest {
IgniteConfiguration cfg = super.getConfiguration(gridName);
cfg.setCacheConfiguration(
- cacheConfiguration("org", CacheMode.PARTITIONED, Integer.class, Organization.class),
- cacheConfiguration("pers", CacheMode.PARTITIONED, AffinityKey.class, Person.class),
- cacheConfiguration("purch", CacheMode.PARTITIONED, AffinityKey.class, Purchase.class),
- cacheConfiguration("prod", CacheMode.REPLICATED, Integer.class, Product.class),
- cacheConfiguration("addr", CacheMode.REPLICATED, Integer.class, Address.class));
+ cacheConfiguration(ORG, CacheMode.PARTITIONED, Integer.class, Organization.class),
+ cacheConfiguration(PERS, CacheMode.PARTITIONED, AffinityKey.class, Person.class),
+ cacheConfiguration(PURCH, CacheMode.PARTITIONED, AffinityKey.class, Purchase.class),
+ cacheConfiguration(PROD, CacheMode.REPLICATED, Integer.class, Product.class),
+ cacheConfiguration(ADDR, CacheMode.REPLICATED, Integer.class, Address.class));
return cfg;
}
@@ -103,11 +118,11 @@ public class BaseH2CompareQueryTest extends AbstractH2CompareQueryTest {
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override protected void createCaches() {
- cacheOrg = jcache(ignite, cacheConfiguration("org", CacheMode.PARTITIONED, Integer.class, Organization.class), "org", Integer.class, Organization.class);
- cachePers = ignite.cache("pers");
- cachePurch = ignite.cache("purch");
- cacheProd = ignite.cache("prod");
- cacheAddr = ignite.cache("addr");
+ cacheOrg = jcache(ignite, cacheConfiguration(ORG, CacheMode.PARTITIONED, Integer.class, Organization.class), ORG, Integer.class, Organization.class);
+ cachePers = ignite.cache(PERS);
+ cachePurch = ignite.cache(PURCH);
+ cacheProd = ignite.cache(PROD);
+ cacheAddr = ignite.cache(ADDR);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite2.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite2.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite2.java
index 5085cd5..4d82bf9 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite2.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite2.java
@@ -34,6 +34,10 @@ import org.apache.ignite.internal.processors.cache.index.DynamicIndexPartitioned
import org.apache.ignite.internal.processors.cache.index.DynamicIndexPartitionedTransactionalConcurrentSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexReplicatedAtomicConcurrentSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexReplicatedTransactionalConcurrentSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteCacheGroupsCompareQueryTest;
+import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlDistributedJoinSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlSegmentedIndexSelfTest;
import org.apache.ignite.testframework.IgniteTestSuite;
/**
@@ -69,6 +73,11 @@ public class IgniteCacheQuerySelfTestSuite2 extends TestSuite {
suite.addTestSuite(IgniteCacheDistributedQueryStopOnCancelOrTimeoutSelfTest.class);
suite.addTestSuite(IgniteCacheObjectKeyIndexingSelfTest.class);
+ suite.addTestSuite(IgniteCacheGroupsCompareQueryTest.class);
+ suite.addTestSuite(IgniteCacheGroupsSqlSegmentedIndexSelfTest.class);
+ suite.addTestSuite(IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest.class);
+ suite.addTestSuite(IgniteCacheGroupsSqlDistributedJoinSelfTest.class);
+
return suite;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
index 0f4a418..794ec4d 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheWithIndexingTestSuite.java
@@ -30,6 +30,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheOffheapIndexEntryEvi
import org.apache.ignite.internal.processors.cache.GridCacheOffheapIndexGetSelfTest;
import org.apache.ignite.internal.processors.cache.GridIndexingWithNoopSwapSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheConfigurationPrimitiveTypesSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheGroupsSqlTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheStarvationOnRebalanceTest;
import org.apache.ignite.internal.processors.cache.IgniteClientReconnectQueriesTest;
import org.apache.ignite.internal.processors.cache.ttl.CacheTtlAtomicLocalSelfTest;
@@ -72,6 +73,8 @@ public class IgniteCacheWithIndexingTestSuite extends TestSuite {
suite.addTestSuite(ClientReconnectAfterClusterRestartTest.class);
+ suite.addTestSuite(IgniteCacheGroupsSqlTest.class);
+
return suite;
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
index 11f9472..3ba39c1 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
@@ -21,11 +21,13 @@ import com.beust.jcommander.Parameter;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.configuration.MemoryConfiguration;
import org.apache.ignite.internal.util.tostring.GridToStringBuilder;
+import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
import java.util.ArrayList;
import java.util.List;
+import org.jetbrains.annotations.Nullable;
/**
* Input arguments for Ignite benchmarks.
@@ -82,7 +84,8 @@ public class IgniteBenchmarkArguments {
/** */
@Parameter(names = {"-r", "--range"}, description = "Key range")
- public int range = 1_000_000;
+ @GridToStringInclude
+ private int range = 1_000_000;
/** */
@Parameter(names = {"-sf", "--scaleFactor"}, description = "Scale factor")
@@ -194,6 +197,14 @@ public class IgniteBenchmarkArguments {
@Parameter(names = {"-ps", "--pageSize"}, description = "Page size")
private int pageSize = MemoryConfiguration.DFLT_PAGE_SIZE;
+ /** */
+ @Parameter(names = {"-cg", "--cacheGrp"}, description = "Cache group for caches")
+ private String cacheGrp;
+
+ /** */
+ @Parameter(names = {"-cc", "--cachesCnt"}, description = "Number of caches to create")
+ private int cachesCnt = 1;
+
/**
* @return List of enabled load test operations.
*/
@@ -475,6 +486,20 @@ public class IgniteBenchmarkArguments {
}
/**
+ * @return Name of cache group to be set for caches.
+ */
+ @Nullable public String cacheGroup() {
+ return cacheGrp;
+ }
+
+ /**
+ * @return Number of caches to create.
+ */
+ public int cachesCount() {
+ return cachesCnt;
+ }
+
+ /**
* @return Description.
*/
public String description() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/db85d166/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
index 6e25fc4..1f947de 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteNode.java
@@ -112,6 +112,9 @@ public class IgniteNode implements BenchmarkServer {
cc.setNearConfiguration(nearCfg);
}
+ if (args.cacheGroup() != null)
+ cc.setGroupName(args.cacheGroup());
+
cc.setWriteSynchronizationMode(args.syncMode());
cc.setBackups(args.backups());