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 <[email protected]>
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;