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 2fff61570f0 IGNITE-22999 Fixed NPE in the cache distribution command 
(#11490)
2fff61570f0 is described below

commit 2fff61570f042c662af7e550b9f45d0386730f8b
Author: Aleksandr <[email protected]>
AuthorDate: Fri Sep 20 11:52:25 2024 +0500

    IGNITE-22999 Fixed NPE in the cache distribution command (#11490)
---
 .../util/GridCommandHandlerClusterByClassTest.java      | 17 +++++++++++++++++
 .../cache/distribution/CacheDistributionTask.java       | 11 +++++++----
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git 
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
 
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
index 32954a57a8f..b98b168a078 100644
--- 
a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
+++ 
b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerClusterByClassTest.java
@@ -2055,6 +2055,9 @@ public class GridCommandHandlerClusterByClassTest extends 
GridCommandHandlerClus
 
         createCacheAndPreload(ignite, 100);
 
+        createCacheAndPreload(client, "with-node-filter-cache", 1, 3,
+            node -> node.consistentId().toString().endsWith("0"));
+
         injectTestSystemOut();
 
         // Run distribution for all node and all cache
@@ -2068,6 +2071,9 @@ public class GridCommandHandlerClusterByClassTest extends 
GridCommandHandlerClus
         // Result include info by cache "ignite-sys-cache"
         assertContains(log, out, "[next group: id=-2100569601, 
name=ignite-sys-cache]");
 
+        // Result include info by cache "with-node-filter-cache"
+        assertContains(log, out, "[next group: id=-1695684207, 
name=with-node-filter-cache]");
+
         // Run distribution for all node and all cache and include additional 
user attribute
         assertEquals(EXIT_CODE_OK, execute("--cache", "distribution", "null", 
"--user-attributes", "ZONE,CELL,DC"));
 
@@ -2088,6 +2094,17 @@ public class GridCommandHandlerClusterByClassTest 
extends GridCommandHandlerClus
 
         // Check that number of columns increased by 3
         assertEquals(3, userArrtCommaNum - commaNum);
+
+        // Run distribution for all node and "with-node-filter-cache" cache
+        assertEquals(EXIT_CODE_OK, execute("--cache", "distribution", "null", 
"with-node-filter-cache"));
+
+        out = testOut.toString();
+
+        // Result include info by cache "with-node-filter-cache"
+        assertContains(log, out, "[next group: id=-1695684207, 
name=with-node-filter-cache]");
+
+        // Result not include error
+        assertNotContains(log, out, "Cache distrubution task failed on nodes");
     }
 
     /** */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/distribution/CacheDistributionTask.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/distribution/CacheDistributionTask.java
index d98ad2a83d9..03cc7430289 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/distribution/CacheDistributionTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/commandline/cache/distribution/CacheDistributionTask.java
@@ -119,16 +119,19 @@ public class CacheDistributionTask extends 
VisorMultiNodeTask<CacheDistributionC
                     return info;
 
                 for (Integer id : grpIds) {
+                    final DynamicCacheDescriptor desc = 
ignite.context().cache().cacheDescriptor(id);
+
+                    final CacheGroupContext grpCtx = 
ignite.context().cache().cacheGroup(desc == null ? id : desc.groupId());
+
+                    if (grpCtx == null)
+                        continue;
+
                     final CacheDistributionGroup grp = new 
CacheDistributionGroup();
 
                     info.getGroups().add(grp);
 
                     grp.setGroupId(id);
 
-                    final DynamicCacheDescriptor desc = 
ignite.context().cache().cacheDescriptor(id);
-
-                    final CacheGroupContext grpCtx = 
ignite.context().cache().cacheGroup(desc == null ? id : desc.groupId());
-
                     grp.setGroupName(grpCtx.cacheOrGroupName());
 
                     grp.setPartitions(new ArrayList<>());

Reply via email to