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;

Reply via email to