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/12/30 10:47:42 UTC
[ignite] branch master updated: IGNITE-12167: Move resetting of
BPlusTree.pageHndWrapper to GridAbstractTest. This closes #6962.
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 06fe064 IGNITE-12167: Move resetting of BPlusTree.pageHndWrapper to GridAbstractTest. This closes #6962.
06fe064 is described below
commit 06fe064c141f72d930b0eedd85e33d5ff68be312
Author: denis-chudov <dc...@gridgain.com>
AuthorDate: Mon Dec 30 13:47:15 2019 +0300
IGNITE-12167: Move resetting of BPlusTree.pageHndWrapper to GridAbstractTest. This closes #6962.
---
.../cache/persistence/tree/BPlusTree.java | 34 +++++++++++++++-------
...ionIntegrityWithPrimaryIndexCorruptionTest.java | 4 +--
.../testframework/junits/GridAbstractTest.java | 4 ++-
.../index/H2TreeCorruptedTreeExceptionTest.java | 26 ++++++++---------
.../index/StopNodeOnRebuildIndexFailureTest.java | 10 ++-----
5 files changed, 44 insertions(+), 34 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
index fc14a5b..c98a7b0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/BPlusTree.java
@@ -96,7 +96,7 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
private static final Object[] EMPTY = {};
/** Wrapper for tree pages operations. Noop by default. Override for test purposes. */
- public static volatile PageHandlerWrapper<Result> pageHndWrapper = (tree, hnd) -> hnd;
+ public static PageHandlerWrapper<Result> testHndWrapper = null;
/** Destroy msg. */
public static final String CONC_DESTROY_MSG = "Tree is being concurrently destroyed: ";
@@ -820,15 +820,29 @@ public abstract class BPlusTree<L, T extends L> extends DataStructure implements
this.failureProcessor = failureProcessor;
// Initialize page handlers.
- askNeighbor = (PageHandler<Get, Result>) pageHndWrapper.wrap(this, new AskNeighbor());
- search = (PageHandler<Get, Result>) pageHndWrapper.wrap(this, new Search());
- lockTail = (PageHandler<Remove, Result>) pageHndWrapper.wrap(this, new LockTail());
- lockTailForward = (PageHandler<Remove, Result>) pageHndWrapper.wrap(this, new LockTailForward());
- lockBackAndTail = (PageHandler<Remove, Result>) pageHndWrapper.wrap(this, new LockBackAndTail());
- lockBackAndRmvFromLeaf = (PageHandler<Remove, Result>) pageHndWrapper.wrap(this, new LockBackAndRmvFromLeaf());
- rmvFromLeaf = (PageHandler<Remove, Result>) pageHndWrapper.wrap(this, new RemoveFromLeaf());
- insert = (PageHandler<Put, Result>) pageHndWrapper.wrap(this, new Insert());
- replace = (PageHandler<Put, Result>) pageHndWrapper.wrap(this, new Replace());
+ askNeighbor = (PageHandler<Get, Result>) wrap(this, new AskNeighbor());
+ search = (PageHandler<Get, Result>) wrap(this, new Search());
+ lockTail = (PageHandler<Remove, Result>) wrap(this, new LockTail());
+ lockTailForward = (PageHandler<Remove, Result>) wrap(this, new LockTailForward());
+ lockBackAndTail = (PageHandler<Remove, Result>) wrap(this, new LockBackAndTail());
+ lockBackAndRmvFromLeaf = (PageHandler<Remove, Result>) wrap(this, new LockBackAndRmvFromLeaf());
+ rmvFromLeaf = (PageHandler<Remove, Result>) wrap(this, new RemoveFromLeaf());
+ insert = (PageHandler<Put, Result>) wrap(this, new Insert());
+ replace = (PageHandler<Put, Result>) wrap(this, new Replace());
+ }
+
+ /**
+ * Returns a wrapper for page handler. By default, there is no wrapper.
+ *
+ * @param tree B-plus tree.
+ * @param hnd Page handler.
+ * @return Page handler wrapper.
+ */
+ private PageHandler<?, Result> wrap(BPlusTree<?, ?> tree, PageHandler<?, Result> hnd) {
+ if (testHndWrapper == null)
+ return hnd;
+ else
+ return testHndWrapper.wrap(tree, hnd);
}
/**
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TransactionIntegrityWithPrimaryIndexCorruptionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TransactionIntegrityWithPrimaryIndexCorruptionTest.java
index f33dda9..105a5ba 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TransactionIntegrityWithPrimaryIndexCorruptionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TransactionIntegrityWithPrimaryIndexCorruptionTest.java
@@ -197,7 +197,7 @@ public class TransactionIntegrityWithPrimaryIndexCorruptionTest extends Abstract
/** {@inheritDoc} */
@Override public void beforeNodesStarted() {
- BPlusTree.pageHndWrapper = (tree, hnd) -> {
+ BPlusTree.testHndWrapper = (tree, hnd) -> {
final IgniteEx locIgnite = (IgniteEx)Ignition.localIgnite();
if (getTestIgniteInstanceIndex(locIgnite.name()) != failedNodeIdx)
@@ -251,7 +251,7 @@ public class TransactionIntegrityWithPrimaryIndexCorruptionTest extends Abstract
/** {@inheritDoc} */
@Override public void afterTransactionsFinished() throws Exception {
// Disable index corruption.
- BPlusTree.pageHndWrapper = (tree, hnd) -> hnd;
+ BPlusTree.testHndWrapper = null;
// Wait until node with corrupted index will left cluster.
GridTestUtils.waitForCondition(() -> {
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 8173f43..54e810a 100755
--- 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
@@ -79,6 +79,7 @@ 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.cache.persistence.tree.BPlusTree;
import org.apache.ignite.internal.processors.resource.GridSpringResourceContext;
import org.apache.ignite.internal.util.GridClassLoaderCache;
import org.apache.ignite.internal.util.GridTestClockTimer;
@@ -330,7 +331,8 @@ public abstract class GridAbstractTest extends JUnitAssertAware {
* @throws Exception If failed. {@link #afterTestsStopped()} will be called in this case.
*/
protected void beforeTestsStarted() throws Exception {
- // No-op.
+ // Checking that no test wrapper is set before test execution.
+ assert BPlusTree.testHndWrapper == null;
}
/**
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2TreeCorruptedTreeExceptionTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2TreeCorruptedTreeExceptionTest.java
index 82bcce9..1fc34b4 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2TreeCorruptedTreeExceptionTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2TreeCorruptedTreeExceptionTest.java
@@ -30,7 +30,6 @@ import org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree;
import org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException;
import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler;
-import org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandlerWrapper;
import org.apache.ignite.internal.processors.query.h2.database.H2Tree;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.testframework.ListeningTestLogger;
@@ -40,6 +39,7 @@ import org.apache.ignite.testframework.junits.WithSystemProperty;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
+import static java.lang.String.format;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_TO_STRING_INCLUDE_SENSITIVE;
/** */
@@ -57,16 +57,18 @@ public class H2TreeCorruptedTreeExceptionTest extends GridCommonAbstractTest {
private final AtomicBoolean failWithCorruptTree = new AtomicBoolean(false);
/** */
- private PageHandlerWrapper<BPlusTree.Result> regularWrapper;
-
- /** */
private final LogListener logListener = new MessageOrderLogListener(
- String.format(".*?Tree is corrupted.*?cacheId=65, cacheName=A, indexName=%s, groupName=%s.*%s.*",
- IDX_NAME, GRP_NAME, IGNITE_TO_STRING_INCLUDE_SENSITIVE)
+ format(
+ ".*?Tree is corrupted.*?cacheId=65, cacheName=A, indexName=%s, groupName=%s" +
+ ", msg=Runtime failure on row: Row@.*?key: 1, val: .*?%s.*",
+ IDX_NAME,
+ GRP_NAME,
+ IGNITE_TO_STRING_INCLUDE_SENSITIVE
+ )
);
/** */
- private final LogListener logSensListener = new MessageOrderLogListener(String.format(".*%s.*", VERY_SENS_STR_DATA));
+ private final LogListener logSensListener = new MessageOrderLogListener(format(".*%s.*", VERY_SENS_STR_DATA));
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
@@ -99,9 +101,7 @@ public class H2TreeCorruptedTreeExceptionTest extends GridCommonAbstractTest {
cleanPersistenceDir();
- regularWrapper = BPlusTree.pageHndWrapper;
-
- BPlusTree.pageHndWrapper = (tree, hnd) -> {
+ BPlusTree.testHndWrapper = (tree, hnd) -> {
if (hnd instanceof BPlusTree.Insert) {
PageHandler<Object, BPlusTree.Result> delegate = (PageHandler<Object, BPlusTree.Result>)hnd;
@@ -134,15 +134,14 @@ public class H2TreeCorruptedTreeExceptionTest extends GridCommonAbstractTest {
/** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
- //restoring wrapper
- BPlusTree.pageHndWrapper = regularWrapper;
-
stopAllGrids();
cleanPersistenceDir();
clearGridToStringClassCache();
+ BPlusTree.testHndWrapper = null;
+
super.afterTest();
}
@@ -177,6 +176,7 @@ public class H2TreeCorruptedTreeExceptionTest extends GridCommonAbstractTest {
assertFalse(logSensListener.check());
System.setProperty(IGNITE_TO_STRING_INCLUDE_SENSITIVE, Boolean.TRUE.toString());
+
clearGridToStringClassCache();
logListener.reset();
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/StopNodeOnRebuildIndexFailureTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/StopNodeOnRebuildIndexFailureTest.java
index 82f9247..bffab83 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/StopNodeOnRebuildIndexFailureTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/StopNodeOnRebuildIndexFailureTest.java
@@ -33,7 +33,6 @@ import org.apache.ignite.internal.metric.IoStatisticsHolder;
import org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree;
import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO;
import org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandler;
-import org.apache.ignite.internal.processors.cache.persistence.tree.util.PageHandlerWrapper;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -56,9 +55,6 @@ public class StopNodeOnRebuildIndexFailureTest extends GridCommonAbstractTest {
/** Create index sql. */
private static final String CREATE_INDEX_SQL = "CREATE INDEX " + INDEX_NAME + " ON " + SQL_TABLE + " (name)";
- /** Normal BPlusTree page handler wrapper. */
- private PageHandlerWrapper<BPlusTree.Result> prevPageHndWrapper;
-
/** */
private final AtomicBoolean exceptionWasThrown = new AtomicBoolean();
@@ -91,11 +87,9 @@ public class StopNodeOnRebuildIndexFailureTest extends GridCommonAbstractTest {
cleanPersistenceDir();
- prevPageHndWrapper = BPlusTree.pageHndWrapper;
-
exceptionWasThrown.set(false);
- BPlusTree.pageHndWrapper = (tree, hnd) -> {
+ BPlusTree.testHndWrapper = (tree, hnd) -> {
if (tree.getName().toUpperCase().contains(INDEX_NAME)) {
PageHandler<Object, BPlusTree.Result> delegate = (PageHandler<Object, BPlusTree.Result>)hnd;
@@ -161,7 +155,7 @@ public class StopNodeOnRebuildIndexFailureTest extends GridCommonAbstractTest {
cleanPersistenceDir();
- BPlusTree.pageHndWrapper = prevPageHndWrapper;
+ BPlusTree.testHndWrapper = null;
}
/**