You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ib...@apache.org on 2021/04/02 07:58:53 UTC
[ignite] branch master updated: IGNITE-14458 Fix flaky
IgniteLocalWalSizeTest. (#8958)
This is an automated email from the ASF dual-hosted git repository.
ibessonov 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 b014376 IGNITE-14458 Fix flaky IgniteLocalWalSizeTest. (#8958)
b014376 is described below
commit b014376d80b8bb7a8e01782130c92757308aeb41
Author: Kirill Tkalenko <tk...@yandex.ru>
AuthorDate: Fri Apr 2 10:58:34 2021 +0300
IGNITE-14458 Fix flaky IgniteLocalWalSizeTest. (#8958)
---
.../IgniteDataStorageMetricsSelfTest.java | 11 -------
.../persistence/db/wal/IgniteLocalWalSizeTest.java | 31 +++++++++++++-----
.../db/wal/WriteAheadLogManagerSelfTest.java | 10 ------
.../persistence/wal/WalArchiveConsistencyTest.java | 10 ------
.../junits/common/GridCommonAbstractTest.java | 38 ++++++++++++++++++++++
5 files changed, 60 insertions(+), 40 deletions(-)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteDataStorageMetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteDataStorageMetricsSelfTest.java
index 0be8220..eea82cf 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteDataStorageMetricsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/IgniteDataStorageMetricsSelfTest.java
@@ -43,7 +43,6 @@ import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.pagemem.wal.record.DataRecord;
import org.apache.ignite.internal.processors.cache.WalStateManager.WALDisableContext;
import org.apache.ignite.internal.processors.cache.persistence.wal.FileDescriptor;
-import org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager;
import org.apache.ignite.internal.processors.metric.MetricRegistry;
import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
@@ -441,16 +440,6 @@ public class IgniteDataStorageMetricsSelfTest extends GridCommonAbstractTest {
}
/**
- * Getting WAL manger.
- *
- * @param n Node.
- * @return WAL manager.
- */
- private FileWriteAheadLogManager walMgr(IgniteEx n) {
- return (FileWriteAheadLogManager)n.context().cache().context().wal();
- }
-
- /**
* Getting db manager of node.
*
* @param n Node.
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteLocalWalSizeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteLocalWalSizeTest.java
index 2854a2a..d2244f1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteLocalWalSizeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteLocalWalSizeTest.java
@@ -31,7 +31,6 @@ import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.cache.persistence.wal.FileDescriptor;
-import org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager;
import org.apache.ignite.internal.processors.cache.persistence.wal.filehandle.FileWriteHandle;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -39,11 +38,13 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.jetbrains.annotations.Nullable;
import org.junit.Test;
+import static org.apache.ignite.configuration.DataStorageConfiguration.UNLIMITED_WAL_ARCHIVE;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.ZIP_SUFFIX;
import static org.apache.ignite.internal.processors.cache.persistence.wal.FileDescriptor.fileName;
import static org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager.WAL_SEGMENT_COMPACTED_OR_RAW_FILE_FILTER;
import static org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager.isSegmentFileName;
import static org.apache.ignite.testframework.GridTestUtils.getFieldValue;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
/**
* Class for testing local size of WAL.
@@ -73,6 +74,7 @@ public class IgniteLocalWalSizeTest extends GridCommonAbstractTest {
new DataStorageConfiguration()
.setWalSegments(5)
.setWalSegmentSize((int)U.MB)
+ .setMaxWalArchiveSize(UNLIMITED_WAL_ARCHIVE)
.setDefaultDataRegionConfiguration(new DataRegionConfiguration().setPersistenceEnabled(true))
);
}
@@ -185,12 +187,23 @@ public class IgniteLocalWalSizeTest extends GridCommonAbstractTest {
* Check that local segment sizes in the memory and actual match.
*
* @param n Node.
+ * @throws Exception If failed.
*/
- private void checkLocalSegmentSizes(IgniteEx n) {
- FileWriteAheadLogManager wal = (FileWriteAheadLogManager)n.context().cache().context().wal();
+ private void checkLocalSegmentSizes(IgniteEx n) throws Exception {
+ disableWal(n, true);
+
+ if (walMgr(n).getSegmentRouter().hasArchive()) {
+ assertTrue(waitForCondition(
+ () -> walMgr(n).lastArchivedSegment() == walMgr(n).currentSegment() - 1, getTestTimeout()));
+ }
+
+ if (n.context().config().getDataStorageConfiguration().isWalCompactionEnabled()) {
+ assertTrue(waitForCondition(
+ () -> walMgr(n).lastCompactedSegment() == walMgr(n).lastArchivedSegment(), getTestTimeout()));
+ }
- File walWorkDir = getFieldValue(wal, "walWorkDir");
- File walArchiveDir = getFieldValue(wal, "walArchiveDir");
+ File walWorkDir = getFieldValue(walMgr(n), "walWorkDir");
+ File walArchiveDir = getFieldValue(walMgr(n), "walArchiveDir");
Map<Long, Long> expSegmentSize = new HashMap<>();
@@ -204,7 +217,7 @@ public class IgniteLocalWalSizeTest extends GridCommonAbstractTest {
expSegmentSize.putIfAbsent(fd.idx(), fd.file().length());
});
- FileWriteHandle currHnd = getFieldValue(wal, "currHnd");
+ FileWriteHandle currHnd = getFieldValue(walMgr(n), "currHnd");
if (!walArchiveDir.equals(walWorkDir)) {
long absIdx = currHnd.getSegmentId();
@@ -216,14 +229,14 @@ public class IgniteLocalWalSizeTest extends GridCommonAbstractTest {
assertEquals(currHnd.getSegmentId() + 1, expSegmentSize.size());
- Map<Long, Long> segmentSize = getFieldValue(wal, "segmentSize");
+ Map<Long, Long> segmentSize = getFieldValue(walMgr(n), "segmentSize");
assertEquals(expSegmentSize.size(), segmentSize.size());
expSegmentSize.forEach((idx, size) -> {
assertEquals(idx.toString(), size, segmentSize.get(idx));
- assertEquals(idx.toString(), size.longValue(), wal.segmentSize(idx));
+ assertEquals(idx.toString(), size.longValue(), walMgr(n).segmentSize(idx));
});
- assertEquals(0, wal.segmentSize(currHnd.getSegmentId() + 1));
+ assertEquals(0, walMgr(n).segmentSize(currHnd.getSegmentId() + 1));
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WriteAheadLogManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WriteAheadLogManagerSelfTest.java
index e978e77..cff984a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WriteAheadLogManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/WriteAheadLogManagerSelfTest.java
@@ -299,14 +299,4 @@ public class WriteAheadLogManagerSelfTest extends GridCommonAbstractTest {
@Nullable private GridTimeoutObject timeoutRollover(IgniteEx n) {
return getFieldValue(walMgr(n), "timeoutRollover");
}
-
- /**
- * Getting WAL manager.
- *
- * @param n Node.
- * @return WAL manager.
- */
- private FileWriteAheadLogManager walMgr(IgniteEx n) {
- return (FileWriteAheadLogManager)n.context().cache().context().wal();
- }
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/WalArchiveConsistencyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/WalArchiveConsistencyTest.java
index 43a26c2..a060eed 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/WalArchiveConsistencyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/WalArchiveConsistencyTest.java
@@ -273,16 +273,6 @@ public class WalArchiveConsistencyTest extends GridCommonAbstractTest {
}
/**
- * Getting WAL manager of node.
- *
- * @param n Node.
- * @return WAL manager.
- */
- private FileWriteAheadLogManager walMgr(IgniteEx n) {
- return (FileWriteAheadLogManager)n.context().cache().context().wal();
- }
-
- /**
* Getting db manager of node.
*
* @param n Node.
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 e8a2aa7..95aea5b 100755
--- 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
@@ -77,6 +77,7 @@ import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.IgniteKernal;
+import org.apache.ignite.internal.pagemem.wal.record.DataRecord;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.affinity.GridAffinityFunctionContextImpl;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
@@ -90,6 +91,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.IgniteCacheProxy;
import org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl;
import org.apache.ignite.internal.processors.cache.PartitionUpdateCounter;
+import org.apache.ignite.internal.processors.cache.WalStateManager.WALDisableContext;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTopologyFuture;
import org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache;
@@ -103,6 +105,8 @@ import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCach
import org.apache.ignite.internal.processors.cache.local.GridLocalCache;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager;
+import org.apache.ignite.internal.processors.cache.persistence.wal.WALPointer;
import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager;
import org.apache.ignite.internal.processors.cache.verify.IdleVerifyResultV2;
@@ -136,6 +140,7 @@ import org.apache.ignite.transactions.TransactionRollbackException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import static java.util.Collections.emptyList;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toSet;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_EVENT_DRIVEN_SERVICE_PROCESSOR_ENABLED;
@@ -146,6 +151,7 @@ import static org.apache.ignite.configuration.IgniteConfiguration.DFLT_SNAPSHOT_
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isNearEnabled;
import static org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState.OWNING;
import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.DFLT_STORE_DIR;
+import static org.apache.ignite.testframework.GridTestUtils.setFieldValue;
import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
@@ -2609,4 +2615,36 @@ public abstract class GridCommonAbstractTest extends GridAbstractTest {
}
}
}
+
+ /**
+ * Getting WAL manager.
+ *
+ * @param n Node.
+ * @return WAL manger.
+ */
+ protected static FileWriteAheadLogManager walMgr(IgniteEx n) {
+ return (FileWriteAheadLogManager)n.context().cache().context().wal();
+ }
+
+ /**
+ * Disable/enable VAL.
+ *
+ * @param n Node.
+ * @param disable Disable flag.
+ * @throws Exception If failed.
+ */
+ protected static void disableWal(IgniteEx n, boolean disable) throws Exception {
+ WALDisableContext walDisableCtx = n.context().cache().context().walState().walDisableContext();
+
+ setFieldValue(walDisableCtx, "disableWal", disable);
+
+ assertEquals(disable, walDisableCtx.check());
+
+ WALPointer logPtr = walMgr(n).log(new DataRecord(emptyList()));
+
+ if (disable)
+ assertNull(logPtr);
+ else
+ assertNotNull(logPtr);
+ }
}