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/02/11 13:23:46 UTC
[ignite] branch master updated: IGNITE-14139 Incorrect initialize
checkpoint-runner-cpu thread pool (#8770)
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 a125b53 IGNITE-14139 Incorrect initialize checkpoint-runner-cpu thread pool (#8770)
a125b53 is described below
commit a125b5359c66433220ecc07a1569bc47980b0feb
Author: Vladislav Pyatkov <vl...@gmail.com>
AuthorDate: Thu Feb 11 16:23:18 2021 +0300
IGNITE-14139 Incorrect initialize checkpoint-runner-cpu thread pool (#8770)
---
.../persistence/checkpoint/CheckpointWorkflow.java | 4 +-
.../db/file/IgnitePdsCheckpointSimpleTest.java | 87 +++++++++++++++++++---
.../ignite/testsuites/IgnitePdsMvccTestSuite.java | 2 +
3 files changed, 79 insertions(+), 14 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointWorkflow.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointWorkflow.java
index 93b7fed..21fcc00 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointWorkflow.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointWorkflow.java
@@ -192,12 +192,12 @@ public class CheckpointWorkflow {
this.checkpointReadWriteLock = checkpointReadWriteLock;
this.dataRegions = dataRegions;
this.cacheGroupsContexts = cacheGroupContexts;
- this.checkpointCollectPagesInfoPool = initializeCheckpointPool();
+ this.checkpointCollectInfoThreads = checkpointCollectInfoThreads;
this.log = logger.apply(getClass());
this.checkpointMarkersStorage = checkpointMarkersStorage;
this.checkpointWriteOrder = checkpointWriteOrder;
this.igniteInstanceName = igniteInstanceName;
- this.checkpointCollectInfoThreads = checkpointCollectInfoThreads;
+ this.checkpointCollectPagesInfoPool = initializeCheckpointPool();
}
/**
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimpleTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimpleTest.java
index 678296b..c452a4e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimpleTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/file/IgnitePdsCheckpointSimpleTest.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.persistence.db.file;
import java.util.concurrent.TimeUnit;
import com.google.common.base.Strings;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cluster.ClusterState;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -28,22 +29,30 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
+import static org.apache.ignite.configuration.DataStorageConfiguration.DFLT_CHECKPOINT_THREADS;
+
/**
* Puts data into grid, waits for checkpoint to start and then verifies data
*/
public class IgnitePdsCheckpointSimpleTest extends GridCommonAbstractTest {
+ /** Checkpoint threads. */
+ public int cpThreads = DFLT_CHECKPOINT_THREADS;
+
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
- IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
-
- DataRegionConfiguration regCfg = new DataRegionConfiguration().setPersistenceEnabled(true);
-
- DataStorageConfiguration dsCfg = new DataStorageConfiguration()
- .setPageSize(4 * 1024)
- .setDefaultDataRegionConfiguration(regCfg)
- .setCheckpointFrequency(TimeUnit.SECONDS.toMillis(10));
-
- return cfg.setDataStorageConfiguration(dsCfg);
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName)
+ .setDataStorageConfiguration(new DataStorageConfiguration()
+ .setPageSize(4 * 1024)
+ .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
+ .setPersistenceEnabled(true))
+ .setCheckpointFrequency(TimeUnit.SECONDS.toMillis(10)));
+
+ if (cpThreads != DFLT_CHECKPOINT_THREADS) {
+ cfg.getDataStorageConfiguration()
+ .setCheckpointThreads(cpThreads);
+ }
+
+ return cfg;
}
/** {@inheritDoc} */
@@ -61,14 +70,67 @@ public class IgnitePdsCheckpointSimpleTest extends GridCommonAbstractTest {
}
/**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testStartNodeWithDefaultCpThreads() throws Exception {
+ checkCheckpointThreads();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testStartNodeWithNonDefaultCpThreads() throws Exception {
+ cpThreads = 10;
+
+ checkCheckpointThreads();
+ }
+
+ /**
+ * Checks that all checkpoint threads are present in JVM.
+ *
+ * @throws Exception If failed.
+ */
+ public void checkCheckpointThreads() throws Exception {
+ IgniteEx ignite = startGrid(0);
+
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ IgniteCache<Object, Object> cache = ignite.getOrCreateCache("cache");
+
+ cache.put(1, 1);
+
+ forceCheckpoint();
+
+ int dbCpThread = 0, ioCpRunner = 0, cpuCpRunner = 0;
+
+ for (Thread t : Thread.getAllStackTraces().keySet()) {
+ if (t.getName().contains("db-checkpoint-thread"))
+ dbCpThread++;
+
+ else if (t.getName().contains("checkpoint-runner-IO"))
+ ioCpRunner++;
+
+ else if (t.getName().contains("checkpoint-runner-cpu"))
+ cpuCpRunner++;
+ }
+
+ assertEquals(1, dbCpThread);
+ assertEquals(cpThreads, ioCpRunner);
+ assertEquals(cpThreads, cpuCpRunner);
+ }
+
+ /**
* Checks if same data can be loaded after checkpoint.
+ *
* @throws Exception if failed.
*/
@Test
public void testRecoveryAfterCpEnd() throws Exception {
IgniteEx ignite = startGrid(0);
- ignite.active(true);
+ ignite.cluster().state(ClusterState.ACTIVE);
IgniteCache<Object, Object> cache = ignite.getOrCreateCache("cache");
@@ -80,7 +142,8 @@ public class IgnitePdsCheckpointSimpleTest extends GridCommonAbstractTest {
stopAllGrids();
IgniteEx igniteRestart = startGrid(0);
- igniteRestart.active(true);
+
+ igniteRestart.cluster().state(ClusterState.ACTIVE);
IgniteCache<Object, Object> cacheRestart = igniteRestart.getOrCreateCache("cache");
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsMvccTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsMvccTestSuite.java
index 220c41f..796547e 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsMvccTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgnitePdsMvccTestSuite.java
@@ -28,6 +28,7 @@ import org.apache.ignite.internal.processors.cache.persistence.IgnitePdsDestroyC
import org.apache.ignite.internal.processors.cache.persistence.IgnitePdsDestroyCacheWithoutCheckpointsTest;
import org.apache.ignite.internal.processors.cache.persistence.db.IgnitePdsDataRegionMetricsTest;
import org.apache.ignite.internal.processors.cache.persistence.db.file.DefaultPageSizeBackwardsCompatibilityTest;
+import org.apache.ignite.internal.processors.cache.persistence.db.file.IgnitePdsCheckpointSimpleTest;
import org.apache.ignite.internal.processors.cache.persistence.db.file.IgnitePdsCheckpointSimulationWithRealCpDisabledTest;
import org.apache.ignite.internal.processors.cache.persistence.db.file.IgnitePdsPageReplacementTest;
import org.apache.ignite.internal.processors.cache.persistence.metastorage.IgniteMetaStorageBasicTest;
@@ -82,6 +83,7 @@ public class IgnitePdsMvccTestSuite {
ignoredTests.add(IgnitePdsDestroyCacheTest.class);
ignoredTests.add(IgnitePdsDestroyCacheWithoutCheckpointsTest.class);
+ ignoredTests.add(IgnitePdsCheckpointSimpleTest.class);
return new ArrayList<>(IgnitePdsTestSuite.suite(ignoredTests));
}