You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2019/03/11 12:00:16 UTC
[ignite] branch master updated: IGNITE-10261: MVCC: cache operation
may hang during late affinity assignment. This closes #5995.
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new bb74ce0 IGNITE-10261: MVCC: cache operation may hang during late affinity assignment. This closes #5995.
bb74ce0 is described below
commit bb74ce0197e7680ff6fa4c0c36dcbb24b2059b5c
Author: rkondakov <ko...@mail.ru>
AuthorDate: Mon Mar 11 15:00:03 2019 +0300
IGNITE-10261: MVCC: cache operation may hang during late affinity assignment. This closes #5995.
---
.../processors/cache/GridCacheContext.java | 12 +++++------
.../processors/cache/GridCacheProcessor.java | 4 ++++
.../cache/distributed/dht/GridDhtGetFuture.java | 14 ++++++++++++
.../distributed/dht/GridDhtGetSingleFuture.java | 14 ++++++++++++
.../dht/GridPartitionedSingleGetFuture.java | 12 +++++------
.../dht/preloader/GridDhtForceKeysFuture.java | 2 ++
.../dht/preloader/GridDhtPreloader.java | 4 ++++
.../IgniteMvccTxSingleThreadedAbstractTest.java | 3 ---
.../CacheLateAffinityAssignmentTest.java | 4 ----
.../GridCachePreloadRestartAbstractSelfTest.java | 2 +-
...CacheColocatedMvccTxSingleThreadedSelfTest.java | 3 ---
.../dht/GridCacheDhtPreloadPutGetSelfTest.java | 14 ++++++++++--
...chePartitionedMvccTxSingleThreadedSelfTest.java | 3 ---
.../mvcc/CacheMvccConfigurationValidationTest.java | 6 ++++++
...itePdsCacheStartStopWithFreqCheckpointTest.java | 13 ++++++++---
.../persistence/IgnitePdsDynamicCacheTest.java | 13 +++++++++--
.../IgnitePdsPartitionsStateRecoveryTest.java | 7 +++++-
.../IgnitePdsRecoveryAfterFileCorruptionTest.java | 6 +++++-
...ocalWalModeChangeDuringRebalancingSelfTest.java | 11 +++++++++-
.../ClientAffinityAssignmentWithBaselineTest.java | 25 +++++++++++-----------
...CheckpointSimulationWithRealCpDisabledTest.java | 2 +-
.../database/IgniteDbDynamicCacheSelfTest.java | 13 +++++++++--
22 files changed, 136 insertions(+), 51 deletions(-)
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 e0b5ee0..2943932 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
@@ -2227,13 +2227,13 @@ public class GridCacheContext<K, V> implements Externalizable {
*
* @param affNodes All affinity nodes.
* @param canRemap Flag indicating that 'get' should be done on a locked topology version.
- * @param partitionId Partition ID.
+ * @param partId Partition ID.
* @return Affinity node to get key from or {@code null} if there is no suitable alive node.
*/
@Nullable public ClusterNode selectAffinityNodeBalanced(
List<ClusterNode> affNodes,
Set<ClusterNode> invalidNodes,
- int partitionId,
+ int partId,
boolean canRemap
) {
if (!readLoadBalancingEnabled) {
@@ -2283,13 +2283,13 @@ public class GridCacheContext<K, V> implements Externalizable {
/**
* Prepare affinity field for builder (if possible).
*
- * @param buider Builder.
+ * @param builder Builder.
*/
- public void prepareAffinityField(BinaryObjectBuilder buider) {
+ public void prepareAffinityField(BinaryObjectBuilder builder) {
assert binaryMarshaller();
- assert buider instanceof BinaryObjectBuilderImpl;
+ assert builder instanceof BinaryObjectBuilderImpl;
- BinaryObjectBuilderImpl builder0 = (BinaryObjectBuilderImpl)buider;
+ BinaryObjectBuilderImpl builder0 = (BinaryObjectBuilderImpl)builder;
if (!cacheObjCtx.customAffinityMapper()) {
CacheDefaultBinaryAffinityKeyMapper mapper =
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 60582a7..40454fb 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
@@ -190,6 +190,7 @@ import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
import static org.apache.ignite.cache.CacheMode.LOCAL;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.cache.CacheMode.REPLICATED;
+import static org.apache.ignite.cache.CacheRebalanceMode.NONE;
import static org.apache.ignite.cache.CacheRebalanceMode.SYNC;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_ASYNC;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
@@ -536,6 +537,9 @@ public class GridCacheProcessor extends GridProcessorAdapter {
assertParameter(!cc.isWriteBehindEnabled(),
"writeBehindEnabled cannot be used with TRANSACTIONAL_SNAPSHOT atomicity mode");
+ assertParameter(cc.getRebalanceMode() != NONE,
+ "Rebalance mode NONE cannot be used with TRANSACTIONAL_SNAPSHOT atomicity mode");
+
ExpiryPolicy expPlc = null;
if (cc.getExpiryPolicyFactory() instanceof FactoryBuilder.SingletonFactory)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
index 8c754f2..2a12fef 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
@@ -194,6 +194,8 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
// TODO get rid of force keys request https://issues.apache.org/jira/browse/IGNITE-10251
GridDhtFuture<Object> fut = cctx.group().preloader().request(cctx, keys.keySet(), topVer);
+ assert !cctx.mvccEnabled() || fut == null; // Should not happen with MVCC enabled.
+
if (fut != null) {
if (!F.isEmpty(fut.invalidPartitions())) {
if (retries == null)
@@ -320,6 +322,18 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
try {
int keyPart = cctx.affinity().partition(key);
+ if (cctx.mvccEnabled()) {
+ boolean noOwners = cctx.topology().owners(keyPart, topVer).isEmpty();
+
+ // Force key request is disabled for MVCC. So if there are no partition owners for the given key
+ // (we have a not strict partition loss policy if we've got here) we need to set flag forceKeys to true
+ // to avoid useless remapping to other non-owning partitions. For non-mvcc caches the force key request
+ // is also useless in the such situations, so the same flow is here: allegedly we've made a force key
+ // request with no results and therefore forceKeys flag may be set to true here.
+ if (noOwners)
+ forceKeys = true;
+ }
+
GridDhtLocalPartition part = topVer.topologyVersion() > 0 ?
cache().topology().localPartition(keyPart, topVer, true) :
cache().topology().localPartition(keyPart);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
index fa15bd8..797fd66 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetSingleFuture.java
@@ -215,6 +215,8 @@ public final class GridDhtGetSingleFuture<K, V> extends GridFutureAdapter<GridCa
private void map() {
// TODO Get rid of force keys request https://issues.apache.org/jira/browse/IGNITE-10251.
if (cctx.group().preloader().needForceKeys()) {
+ assert !cctx.mvccEnabled();
+
GridDhtFuture<Object> fut = cctx.group().preloader().request(
cctx,
Collections.singleton(key),
@@ -290,6 +292,18 @@ public final class GridDhtGetSingleFuture<K, V> extends GridFutureAdapter<GridCa
try {
int keyPart = cctx.affinity().partition(key);
+ if (cctx.mvccEnabled()) {
+ boolean noOwners = cctx.topology().owners(keyPart, topVer).isEmpty();
+
+ // Force key request is disabled for MVCC. So if there are no partition owners for the given key
+ // (we have a not strict partition loss policy if we've got here) we need to set flag forceKeys to true
+ // to avoid useless remapping to other non-owning partitions. For non-mvcc caches the force key request
+ // is also useless in the such situations, so the same flow is here: allegedly we've made a force key
+ // request with no results and therefore forceKeys flag may be set to true here.
+ if (noOwners)
+ forceKeys = true;
+ }
+
GridDhtLocalPartition part = topVer.topologyVersion() > 0 ?
cache().topology().localPartition(keyPart, topVer, true) :
cache().topology().localPartition(keyPart);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
index 99155dc..a82f5b5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
@@ -228,17 +228,17 @@ public class GridPartitionedSingleGetFuture extends GridCacheFutureAdapter<Objec
* Initialize future.
*/
public void init() {
- AffinityTopologyVersion mappingtopVermappingtopVer;
+ AffinityTopologyVersion mappingTopVer;
if (topVer.topologyVersion() > 0)
- mappingtopVermappingtopVer = topVer;
+ mappingTopVer = topVer;
else {
- mappingtopVermappingtopVer = canRemap ?
+ mappingTopVer = canRemap ?
cctx.affinity().affinityTopologyVersion() :
cctx.shared().exchange().readyAffinityVersion();
}
- map(mappingtopVermappingtopVer);
+ map(mappingTopVer);
}
/**
@@ -366,14 +366,14 @@ public class GridPartitionedSingleGetFuture extends GridCacheFutureAdapter<Objec
List<ClusterNode> affNodes = cctx.affinity().nodesByPartition(part, topVer);
- // Failed if none affinity node found by assigment.
+ // Failed if none affinity node found by assignment.
if (affNodes.isEmpty()) {
onDone(serverNotFoundError(part, topVer));
return null;
}
- // Try to read key localy if we can.
+ // Try to read key locally if we can.
if (tryLocalGet(key, part, topVer, affNodes))
return null;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
index 9d6c8fc..fba1d9d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtForceKeysFuture.java
@@ -235,6 +235,8 @@ public final class GridDhtForceKeysFuture<K, V> extends GridCompoundFuture<Objec
boolean ret = false;
if (mappings != null) {
+ assert !cctx.mvccEnabled(); // Should not happen when MVCC enabled.
+
ClusterNode loc = cctx.localNode();
int curTopVer = topCntr.get();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
index e92a240..042e0ea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPreloader.java
@@ -477,6 +477,10 @@ public class GridDhtPreloader extends GridCachePreloaderAdapter {
/** {@inheritDoc} */
@Override public boolean needForceKeys() {
+ // Do not use force key request with enabled MVCC.
+ if (grp.mvccEnabled())
+ return false;
+
if (grp.rebalanceEnabled()) {
IgniteInternalFuture<Boolean> rebalanceFut = rebalanceFuture();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMvccTxSingleThreadedAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMvccTxSingleThreadedAbstractTest.java
index 89d92ff..48533f4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMvccTxSingleThreadedAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteMvccTxSingleThreadedAbstractTest.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.IgniteCheckedException;
-import org.junit.Ignore;
import org.junit.Test;
import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
@@ -31,7 +30,6 @@ public abstract class IgniteMvccTxSingleThreadedAbstractTest extends IgniteTxAbs
/**
* @throws IgniteCheckedException If test failed.
*/
- @Ignore("https://issues.apache.org/jira/browse/IGNITE-10261")
@Test
public void testPessimisticRepeatableReadCommit() throws Exception {
checkCommit(PESSIMISTIC, REPEATABLE_READ);
@@ -42,7 +40,6 @@ public abstract class IgniteMvccTxSingleThreadedAbstractTest extends IgniteTxAbs
/**
* @throws IgniteCheckedException If test failed.
*/
- @Ignore("https://issues.apache.org/jira/browse/IGNITE-10261")
@Test
public void testPessimisticRepeatableReadRollback() throws Exception {
checkRollback(PESSIMISTIC, REPEATABLE_READ);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
index 294e8c8..6fc749d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheLateAffinityAssignmentTest.java
@@ -90,13 +90,11 @@ import org.apache.ignite.services.Service;
import org.apache.ignite.services.ServiceContext;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
import org.jetbrains.annotations.Nullable;
-import org.junit.Assume;
import org.junit.Test;
import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
@@ -1767,8 +1765,6 @@ public class CacheLateAffinityAssignmentTest extends GridCommonAbstractTest {
*/
@Test
public void testRandomOperations() throws Exception {
- Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-10261", MvccFeatureChecker.forcedMvcc());
-
forceSrvMode = true;
final int MAX_SRVS = 10;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePreloadRestartAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePreloadRestartAbstractSelfTest.java
index f53910e..62350ad 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePreloadRestartAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCachePreloadRestartAbstractSelfTest.java
@@ -195,7 +195,7 @@ public abstract class GridCachePreloadRestartAbstractSelfTest extends GridCommon
*/
@Test
public void testDisabledPreloadRestart() throws Exception {
- Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-10261", MvccFeatureChecker.forcedMvcc());
+ Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-11417", MvccFeatureChecker.forcedMvcc());
preloadMode = NONE;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheColocatedMvccTxSingleThreadedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheColocatedMvccTxSingleThreadedSelfTest.java
index 717d771..c8c117a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheColocatedMvccTxSingleThreadedSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheColocatedMvccTxSingleThreadedSelfTest.java
@@ -24,7 +24,6 @@ import org.apache.ignite.internal.processors.cache.IgniteMvccTxSingleThreadedAbs
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
-import static org.apache.ignite.cache.CacheRebalanceMode.NONE;
/**
* Test Mvcc txs in single-threaded mode for colocated cache.
@@ -45,8 +44,6 @@ public class GridCacheColocatedMvccTxSingleThreadedSelfTest extends IgniteMvccTx
ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_ASYNC);
- ccfg.setRebalanceMode(NONE);
-
cfg.setCacheConfiguration(ccfg);
return cfg;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtPreloadPutGetSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtPreloadPutGetSelfTest.java
index a2070f5..b417dcd 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtPreloadPutGetSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCacheDhtPreloadPutGetSelfTest.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.processors.cache.distributed.dht;
+import java.util.Arrays;
+import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -152,6 +154,8 @@ public class GridCacheDhtPreloadPutGetSelfTest extends GridCommonAbstractTest {
*/
@Test
public void testPutGetNone0() throws Exception {
+ Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-11417", MvccFeatureChecker.forcedMvcc());
+
preloadMode = NONE;
backups = 0;
@@ -163,7 +167,7 @@ public class GridCacheDhtPreloadPutGetSelfTest extends GridCommonAbstractTest {
*/
@Test
public void testPutGetNone1() throws Exception {
- Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-10261", MvccFeatureChecker.forcedMvcc());
+ Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-11417", MvccFeatureChecker.forcedMvcc());
preloadMode = NONE;
backups = 1;
@@ -176,7 +180,7 @@ public class GridCacheDhtPreloadPutGetSelfTest extends GridCommonAbstractTest {
*/
@Test
public void testPutGetNone2() throws Exception {
- Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-10261", MvccFeatureChecker.forcedMvcc());
+ Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-11417", MvccFeatureChecker.forcedMvcc());
preloadMode = NONE;
backups = 2;
@@ -247,10 +251,16 @@ public class GridCacheDhtPreloadPutGetSelfTest extends GridCommonAbstractTest {
done.set(true);
for (int j = 0; j < KEY_CNT; j++) {
+ // Check SingleGetFuture.
Integer val = internalCache(cache).get(j);
assert val != null;
+ // Check GetFuture.
+ Map<Integer, Integer> vals = internalCache(cache).getAll(Arrays.asList(j, j + 1));
+
+ assert val.equals(vals.get(j));
+
if (j % FREQUENCY == 0)
info("Read entry: " + j + " -> " + val);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMvccTxSingleThreadedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMvccTxSingleThreadedSelfTest.java
index 1404839..c282a76 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMvccTxSingleThreadedSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCachePartitionedMvccTxSingleThreadedSelfTest.java
@@ -24,7 +24,6 @@ import org.apache.ignite.internal.processors.cache.IgniteMvccTxSingleThreadedAbs
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
-import static org.apache.ignite.cache.CacheRebalanceMode.NONE;
/**
* Tests for partitioned cache transactions.
@@ -45,8 +44,6 @@ public class GridCachePartitionedMvccTxSingleThreadedSelfTest extends IgniteMvcc
ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_ASYNC);
- ccfg.setRebalanceMode(NONE);
-
cfg.setCacheConfiguration(ccfg);
return cfg;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccConfigurationValidationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccConfigurationValidationTest.java
index 3b65818..fb83ae0 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccConfigurationValidationTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccConfigurationValidationTest.java
@@ -31,6 +31,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheInterceptor;
import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.CacheRebalanceMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
@@ -286,6 +287,11 @@ public class CacheMvccConfigurationValidationTest extends GridCommonAbstractTest
);
assertCannotStart(
+ mvccCacheConfig().setRebalanceMode(CacheRebalanceMode.NONE),
+ "Rebalance mode NONE cannot be used with TRANSACTIONAL_SNAPSHOT atomicity mode"
+ );
+
+ assertCannotStart(
mvccCacheConfig().setNearConfiguration(new NearCacheConfiguration<>()),
"near cache cannot be used with TRANSACTIONAL_SNAPSHOT atomicity mode"
);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheStartStopWithFreqCheckpointTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheStartStopWithFreqCheckpointTest.java
index dc24c0b..382bb2e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheStartStopWithFreqCheckpointTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsCacheStartStopWithFreqCheckpointTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Assert;
import org.junit.Test;
@@ -80,11 +81,17 @@ public class IgnitePdsCacheStartStopWithFreqCheckpointTest extends GridCommonAbs
/** {@inheritDoc} */
private CacheConfiguration cacheConfiguration(int cacheIdx) {
- return new CacheConfiguration(CACHE_NAME + cacheIdx)
+ CacheConfiguration ccfg = new CacheConfiguration(CACHE_NAME + cacheIdx)
.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL)
.setCacheMode(CacheMode.REPLICATED)
- .setBackups(0)
- .setRebalanceMode(CacheRebalanceMode.NONE);
+ .setBackups(0);
+
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
+
+ return ccfg;
}
/** {@inheritDoc} */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsDynamicCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsDynamicCacheTest.java
index 13936ee..993f372 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsDynamicCacheTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsDynamicCacheTest.java
@@ -33,6 +33,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.WALMode;
import org.apache.ignite.internal.processors.database.IgniteDbDynamicCacheSelfTest;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.MvccFeatureChecker;
import org.junit.Test;
/**
@@ -96,18 +97,26 @@ public class IgnitePdsDynamicCacheTest extends IgniteDbDynamicCacheSelfTest {
ccfg1.setName("cache1");
ccfg1.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
ccfg1.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
- ccfg1.setRebalanceMode(CacheRebalanceMode.NONE);
ccfg1.setAffinity(new RendezvousAffinityFunction(false, 32));
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg1.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg1.setRebalanceMode(CacheRebalanceMode.NONE);
+
CacheConfiguration ccfg2 = new CacheConfiguration();
ccfg2.setName("cache2");
ccfg2.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
ccfg2.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
- ccfg2.setRebalanceMode(CacheRebalanceMode.NONE);
ccfg2.setAffinity(new RendezvousAffinityFunction(false, 32));
ccfg2.setIndexedTypes(Integer.class, Value.class);
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg2.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg2.setRebalanceMode(CacheRebalanceMode.NONE);
+
CacheConfiguration ccfg3 = new CacheConfiguration();
ccfg3.setName("cache3");
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsPartitionsStateRecoveryTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsPartitionsStateRecoveryTest.java
index 2037a67..40c8a98 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsPartitionsStateRecoveryTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsPartitionsStateRecoveryTest.java
@@ -62,10 +62,15 @@ public class IgnitePdsPartitionsStateRecoveryTest extends GridCommonAbstractTest
CacheConfiguration ccfg = defaultCacheConfiguration()
.setBackups(0)
- .setRebalanceMode(CacheRebalanceMode.NONE) // Disable rebalance to prevent owning MOVING partitions.
.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC)
.setAffinity(new RendezvousAffinityFunction(false, PARTS_CNT));
+ // Disable rebalance to prevent owning MOVING partitions.
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
+
cfg.setCacheConfiguration(ccfg);
return cfg;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
index 0af7629..6928cc2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgnitePdsRecoveryAfterFileCorruptionTest.java
@@ -49,6 +49,7 @@ import org.apache.ignite.internal.processors.cache.persistence.file.FilePageStor
import org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl;
import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
@@ -72,7 +73,10 @@ public class IgnitePdsRecoveryAfterFileCorruptionTest extends GridCommonAbstract
CacheConfiguration ccfg = new CacheConfiguration(cacheName);
ccfg.setAffinity(new RendezvousAffinityFunction(true, 1));
- ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/LocalWalModeChangeDuringRebalancingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/LocalWalModeChangeDuringRebalancingSelfTest.java
index 78940a8..fb99aa8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/LocalWalModeChangeDuringRebalancingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/LocalWalModeChangeDuringRebalancingSelfTest.java
@@ -22,6 +22,8 @@ import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
import java.nio.file.OpenOption;
+import java.util.Set;
+import java.util.TreeSet;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicReference;
@@ -570,7 +572,14 @@ public class LocalWalModeChangeDuringRebalancingSelfTest extends GridCommonAbstr
cache = newIgnite.cache(DEFAULT_CACHE_NAME);
for (int k = 0; k < keysCnt; k++)
- assertFalse("k=" + k +", v=" + cache.get(k), cache.containsKey(k));
+ assertFalse("k=" + k +", v=" + cache.get(k), cache.containsKey(k));
+
+ Set<Integer> keys = new TreeSet<>();
+
+ for (int k = 0; k < keysCnt; k++)
+ keys.add(k);
+
+ assertFalse(cache.containsKeys(keys));
}
/**
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/baseline/ClientAffinityAssignmentWithBaselineTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/baseline/ClientAffinityAssignmentWithBaselineTest.java
index f081aac..7788193 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/baseline/ClientAffinityAssignmentWithBaselineTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/baseline/ClientAffinityAssignmentWithBaselineTest.java
@@ -46,15 +46,16 @@ import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteNodeAttributes;
+import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
-import org.junit.Assume;
+import org.junit.Ignore;
import org.junit.Test;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_BASELINE_AUTO_ADJUST_ENABLED;
@@ -174,8 +175,6 @@ public class ClientAffinityAssignmentWithBaselineTest extends GridCommonAbstract
/** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
- Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-10261", MvccFeatureChecker.forcedMvcc());
-
stopAllGrids();
cleanPersistenceDir();
@@ -554,10 +553,9 @@ public class ClientAffinityAssignmentWithBaselineTest extends GridCommonAbstract
* Tests that if dynamic cache has no affinity nodes at the moment of start,
* it will still work correctly when affinity nodes will appear.
*/
+ @Ignore("https://issues.apache.org/jira/browse/IGNITE-8652")
@Test
public void testDynamicCacheStartNoAffinityNodes() throws Exception {
- fail("IGNITE-8652");
-
IgniteEx ig0 = startGrid(0);
ig0.cluster().active(true);
@@ -850,8 +848,12 @@ public class ClientAffinityAssignmentWithBaselineTest extends GridCommonAbstract
(tId, ops) -> ops == null ? 1 : ops + 1);
}
catch (CacheException e) {
- if (e.getCause() instanceof ClusterTopologyException)
- ((ClusterTopologyException)e.getCause()).retryReadyFuture().get();
+ if (e.getCause() instanceof ClusterTopologyException) {
+ IgniteFuture retryFut = ((ClusterTopologyException)e.getCause()).retryReadyFuture();
+
+ if (retryFut != null)
+ retryFut.get();
+ }
}
catch (ClusterTopologyException e) {
e.retryReadyFuture().get();
@@ -961,11 +963,10 @@ public class ClientAffinityAssignmentWithBaselineTest extends GridCommonAbstract
while (U.currentTimeMillis() < startTs + waitMs) {
Map<Long, Long> view2 = new HashMap<>(threadProgressTracker);
- if (loadError.get() != null) {
- loadError.get().printStackTrace();
+ Throwable t;
- fail("Unexpected error in load thread: " + loadError.get().toString());
- }
+ if ((t = loadError.get()) != null)
+ fail("Unexpected error in load thread: " + X.getFullStackTrace(t));
boolean frozenThreadExists = false;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimulationWithRealCpDisabledTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimulationWithRealCpDisabledTest.java
index b4ec7e9..b9e819c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimulationWithRealCpDisabledTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimulationWithRealCpDisabledTest.java
@@ -110,7 +110,7 @@ public class IgnitePdsCheckpointSimulationWithRealCpDisabledTest extends GridCom
CacheConfiguration mvccCfg = new CacheConfiguration(MVCC_CACHE_NAME)
.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT)
- .setRebalanceMode(CacheRebalanceMode.NONE);
+ .setRebalanceDelay(Long.MAX_VALUE);
cfg.setCacheConfiguration(ccfg, mvccCfg);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbDynamicCacheSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbDynamicCacheSelfTest.java
index 1f09cb2..b418dd2 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbDynamicCacheSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbDynamicCacheSelfTest.java
@@ -29,6 +29,7 @@ import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
@@ -95,9 +96,13 @@ public class IgniteDbDynamicCacheSelfTest extends GridCommonAbstractTest {
ccfg.setName("cache1");
ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
- ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
ccfg.setAffinity(new RendezvousAffinityFunction(false, 32));
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
+
for (int k = 0; k < iterations; k++) {
System.out.println("Iteration: " + k);
@@ -130,9 +135,13 @@ public class IgniteDbDynamicCacheSelfTest extends GridCommonAbstractTest {
ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
- ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
ccfg.setAffinity(new RendezvousAffinityFunction(false, 32));
+ if (MvccFeatureChecker.forcedMvcc())
+ ccfg.setRebalanceDelay(Long.MAX_VALUE);
+ else
+ ccfg.setRebalanceMode(CacheRebalanceMode.NONE);
+
ccfg.setIndexedTypes(Integer.class, String.class);
long finishTime = U.currentTimeMillis() + 20_000;