This is an automated email from the ASF dual-hosted git repository.

NSAmelchev 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 9d551f9d603 IGNITE-28591 Validate cache existence before destroy 
command execution (#13064)
9d551f9d603 is described below

commit 9d551f9d60353f172d2265f1ef2b9f60839e167d
Author: Nikita Amelchev <[email protected]>
AuthorDate: Wed Apr 22 19:14:24 2026 +0300

    IGNITE-28591 Validate cache existence before destroy command execution 
(#13064)
---
 .../util/GridCommandHandlerClusterByClassTest.java       |  5 +++--
 .../internal/management/cache/CacheDestroyCommand.java   | 16 +++++++++-------
 2 files changed, 12 insertions(+), 9 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 efc11f3cd5b..c74e88648b5 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
@@ -1464,9 +1464,10 @@ public class GridCommandHandlerClusterByClassTest 
extends GridCommandHandlerClus
         String expConfirmation = String.format(CacheDestroyCommand.CONFIRM_MSG,
             cacheNames.size(), S.joinToString(cacheNames, ", ", "..", 80, 0));
 
-        // Ensure we cannot delete a cache groups.
+        // Ensure we cannot delete a cache groups or not existed cache.
         injectTestSystemIn(CONFIRM_MSG);
-        assertEquals(EXIT_CODE_OK, execute("--cache", DESTROY, CACHES, 
"shared1,shared2"));
+        assertEquals(EXIT_CODE_INVALID_ARGUMENTS, execute("--cache", DESTROY, 
CACHES, "shared1,shared2"));
+        assertContains(log, testOut.toString(), "Caches do not exist: shared1, 
shared2");
         assertTrue(crd.cacheNames().containsAll(cacheNames));
 
         // Destroy all user-created caches.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/cache/CacheDestroyCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/cache/CacheDestroyCommand.java
index 6023957e19a..5e736b70c68 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/cache/CacheDestroyCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/cache/CacheDestroyCommand.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.management.cache;
 
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.Consumer;
@@ -55,17 +56,18 @@ public class CacheDestroyCommand
         CacheDestroyCommandArg arg,
         Consumer<String> printer
     ) {
-        if (arg.destroyAllCaches()) {
-            Set<String> caches = new TreeSet<>();
+        Set<String> caches = new TreeSet<>(client != null ? 
client.cacheNames() : ignite.cacheNames());
 
-            if (client != null)
-                caches.addAll(client.cacheNames());
-            else
-                caches.addAll(ignite.cacheNames());
+        if (!F.isEmpty(arg.caches())) {
+            Collection<String> notExisted = F.view(F.asList(arg.caches()), 
F.not(caches::contains));
 
-            arg.caches(caches.toArray(U.EMPTY_STRS));
+            if (!notExisted.isEmpty())
+                throw new IllegalArgumentException("Caches do not exist: " + 
String.join(", ", notExisted));
         }
 
+        if (arg.destroyAllCaches())
+            arg.caches(caches.toArray(U.EMPTY_STRS));
+
         if (F.isEmpty(arg.caches())) {
             printer.accept(NOOP_MSG);
 

Reply via email to