You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by na...@apache.org on 2023/03/19 08:43:47 UTC
[ignite] branch master updated: IGNITE-19060 Fixed snapshot operation NPE on a client node (#10601)
This is an automated email from the ASF dual-hosted git repository.
namelchev 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 1b42fa17ae7 IGNITE-19060 Fixed snapshot operation NPE on a client node (#10601)
1b42fa17ae7 is described below
commit 1b42fa17ae79923954b82b0b50d379eacdc13979
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Sun Mar 19 11:43:36 2023 +0300
IGNITE-19060 Fixed snapshot operation NPE on a client node (#10601)
---
.../persistence/snapshot/IgniteSnapshotManager.java | 16 ++++++++--------
.../persistence/snapshot/AbstractSnapshotSelfTest.java | 10 +++++++---
.../snapshot/IgniteClusterSnapshotStreamerTest.java | 7 +++++--
.../persistence/snapshot/IncrementalSnapshotTest.java | 3 +++
.../incremental/AbstractIncrementalSnapshotTest.java | 7 +++++--
.../IncrementalSnapshotCheckBeforeRestoreTest.java | 3 +++
6 files changed, 31 insertions(+), 15 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
index a82e2e8eec5..1e5a8a74d78 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
@@ -895,6 +895,11 @@ public class IgniteSnapshotManager extends GridCacheSharedManagerAdapter
if (!CU.baselineNode(cctx.localNode(), cctx.kernalContext().state().clusterState()))
return new GridFinishedFuture<>();
+ if (!CU.isPersistenceEnabled(cctx.gridConfig())) {
+ throw new IgniteException("Create snapshot request has been rejected. Snapshots on an in-memory " +
+ "clusters are not allowed.");
+ }
+
Set<UUID> leftNodes = new HashSet<>(req.nodes());
leftNodes.removeAll(F.viewReadOnly(cctx.discovery().serverNodes(AffinityTopologyVersion.NONE),
F.node2id()));
@@ -1347,10 +1352,10 @@ public class IgniteSnapshotManager extends GridCacheSharedManagerAdapter
IgniteInternalFuture<?> prepFut = req.incremental() ? wrapMsgsFut : new GridFinishedFuture<>();
- return prepFut.chain(r -> {
- if (cctx.kernalContext().clientNode())
- return null;
+ if (cctx.kernalContext().clientNode())
+ return (IgniteInternalFuture<SnapshotOperationResponse>)prepFut;
+ return prepFut.chain(r -> {
try {
if (req.error() != null) {
snpReq.error(req.error());
@@ -2098,11 +2103,6 @@ public class IgniteSnapshotManager extends GridCacheSharedManagerAdapter
if (!IgniteFeatures.allNodesSupports(cctx.discovery().aliveServerNodes(), PERSISTENCE_CACHE_SNAPSHOT))
throw new IgniteException("Not all nodes in the cluster support a snapshot operation.");
- if (!CU.isPersistenceEnabled(cctx.gridConfig())) {
- throw new IgniteException("Create snapshot request has been rejected. Snapshots on an in-memory " +
- "clusters are not allowed.");
- }
-
if (!cctx.kernalContext().state().clusterState().state().active())
throw new IgniteException("Snapshot operation has been rejected. The cluster is inactive.");
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
index 5a83873f2e9..740ba459fee 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/AbstractSnapshotSelfTest.java
@@ -189,11 +189,16 @@ public abstract class AbstractSnapshotSelfTest extends GridCommonAbstractTest {
discoSpi.setIpFinder(((TcpDiscoverySpi)cfg.getDiscoverySpi()).getIpFinder());
+ cfg.setDiscoverySpi(discoSpi);
+ cfg.setCommunicationSpi(new TestRecordingCommunicationSpi());
+
if (dfltCacheCfg != null)
cfg.setCacheConfiguration(dfltCacheCfg);
+ if (cfg.isClientMode())
+ return cfg;
+
return cfg.setConsistentId(igniteInstanceName)
- .setCommunicationSpi(new TestRecordingCommunicationSpi())
.setDataStorageConfiguration(new DataStorageConfiguration()
.setDefaultDataRegionConfiguration(new DataRegionConfiguration()
.setMaxSize(512L * 1024 * 1024)
@@ -202,8 +207,7 @@ public abstract class AbstractSnapshotSelfTest extends GridCommonAbstractTest {
.setPageSize(PAGE_SIZE)
.setWalCompactionEnabled(true))
.setClusterStateOnStart(INACTIVE)
- .setIncludeEventTypes(EVTS_CLUSTER_SNAPSHOT)
- .setDiscoverySpi(discoSpi);
+ .setIncludeEventTypes(EVTS_CLUSTER_SNAPSHOT);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotStreamerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotStreamerTest.java
index ddb59e26f4c..d159464d2b3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotStreamerTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotStreamerTest.java
@@ -90,6 +90,11 @@ public class IgniteClusterSnapshotStreamerTest extends AbstractSnapshotSelfTest
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+ cfg.setCacheConfiguration(null);
+
+ if (cfg.isClientMode())
+ return cfg;
+
// In-memory data region.
DataRegionConfiguration inMemDr = new DataRegionConfiguration();
inMemDr.setPersistenceEnabled(false);
@@ -99,8 +104,6 @@ public class IgniteClusterSnapshotStreamerTest extends AbstractSnapshotSelfTest
inMemDr.setPageEvictionMode(DataPageEvictionMode.RANDOM_2_LRU);
cfg.getDataStorageConfiguration().setDataRegionConfigurations(inMemDr);
- cfg.setCacheConfiguration(null);
-
return cfg;
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java
index 3dbf3f54e89..fcb04783e68 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java
@@ -66,6 +66,9 @@ public class IncrementalSnapshotTest extends AbstractSnapshotSelfTest {
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+ if (cfg.isClientMode())
+ return cfg;
+
cfg.getDataStorageConfiguration()
.setWalCompactionEnabled(walCompactionEnabled)
.setWalSegmentSize((int)U.MB);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/AbstractIncrementalSnapshotTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/AbstractIncrementalSnapshotTest.java
index a1f22ea3711..d1bebb29692 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/AbstractIncrementalSnapshotTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/AbstractIncrementalSnapshotTest.java
@@ -75,14 +75,17 @@ public abstract class AbstractIncrementalSnapshotTest extends GridCommonAbstract
@Override protected IgniteConfiguration getConfiguration(String instanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(instanceName);
+ cfg.setCacheConfiguration(cacheConfiguration(CACHE));
+
+ if (cfg.isClientMode())
+ return cfg;
+
cfg.setDataStorageConfiguration(new DataStorageConfiguration()
.setWalCompactionEnabled(true)
.setDefaultDataRegionConfiguration(new DataRegionConfiguration()
.setName("incremental-snapshot-persist")
.setPersistenceEnabled(true)));
- cfg.setCacheConfiguration(cacheConfiguration(CACHE));
-
cfg.setConsistentId(instanceName);
return cfg;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
index e9634a9bad8..3211fea31e1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotCheckBeforeRestoreTest.java
@@ -56,6 +56,9 @@ public class IncrementalSnapshotCheckBeforeRestoreTest extends AbstractSnapshotS
@Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+ if (cfg.isClientMode())
+ return cfg;
+
cfg.getDataStorageConfiguration().setWalCompactionEnabled(true);
return cfg;