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

dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/main by this push:
     new e73f5e6029 Reorganize commands into different groups (#6131)
e73f5e6029 is described below

commit e73f5e6029c9835885648e998c68c1b7c4d7a614
Author: Dave Marion <[email protected]>
AuthorDate: Fri Feb 20 13:26:50 2026 -0500

    Reorganize commands into different groups (#6131)
---
 assemble/bin/accumulo-cluster                      | 22 ++---
 assemble/bin/accumulo-service                      |  2 +-
 assemble/bin/accumulo-util                         |  2 +-
 .../accumulo/core/cli/BaseKeywordExecutable.java   |  3 +-
 .../accumulo/core/file/rfile/GenerateSplits.java   |  2 +-
 .../apache/accumulo/core/file/rfile/PrintInfo.java |  2 +-
 .../accumulo/core/file/rfile/SplitLarge.java       |  2 +-
 .../org/apache/accumulo/core/util/CreateToken.java |  2 +-
 .../server/conf/CheckAccumuloProperties.java       |  2 +-
 .../server/conf/CheckCompactionConfig.java         |  2 +-
 .../accumulo/server/conf/util/ZooInfoViewer.java   |  2 +-
 .../accumulo/server/conf/util/ZooPropEditor.java   |  2 +-
 .../apache/accumulo/server/init/Initialize.java    |  2 +-
 .../server/util/CheckForMetadataProblems.java      |  2 +-
 .../apache/accumulo/server/util/DumpZookeeper.java |  2 +-
 .../accumulo/server/util/FindOfflineTablets.java   |  2 +-
 .../java/org/apache/accumulo/server/util/Info.java |  2 +-
 .../server/util/ListOnlineOnDemandTablets.java     |  2 +-
 .../accumulo/server/util/LoginProperties.java      |  2 +-
 .../server/util/RemoveEntriesForMissingFiles.java  |  2 +-
 .../server/util/ScanServerMetadataEntries.java     |  2 +-
 .../apache/accumulo/server/util/UpgradeUtil.java   |  2 +-
 .../apache/accumulo/server/util/ZooKeeperMain.java |  2 +-
 .../org/apache/accumulo/server/util/ZooZap.java    |  2 +-
 .../server/util/adminCommand/ChangeSecret.java     |  2 +-
 .../util/adminCommand/DeleteZooInstance.java       |  2 +-
 .../server/util/adminCommand/DumpConfig.java       |  2 +-
 .../accumulo/server/util/adminCommand/Fate.java    |  2 +-
 .../server/util/adminCommand/ListInstances.java    |  2 +-
 .../server/util/adminCommand/ListVolumesUsed.java  |  2 +-
 .../accumulo/server/util/adminCommand/Locks.java   |  2 +-
 .../server/util/adminCommand/PingServer.java       |  2 +-
 .../server/util/adminCommand/RestoreZookeeper.java |  2 +-
 .../server/util/adminCommand/ServiceStatus.java    |  2 +-
 .../accumulo/server/util/adminCommand/StopAll.java |  2 +-
 .../server/util/adminCommand/StopManager.java      |  2 +-
 .../server/util/adminCommand/StopServers.java      |  2 +-
 .../server/util/adminCommand/SystemCheck.java      |  2 +-
 .../util/adminCommand/VerifyTabletAssignments.java |  2 +-
 .../apache/accumulo/tserver/logger/LogReader.java  |  2 +-
 .../apache/accumulo/tserver/util/CreateEmpty.java  |  2 +-
 .../accumulo/start/JCommanderParseException.java   | 25 ++++++
 .../main/java/org/apache/accumulo/start/Main.java  | 40 ++++++---
 .../apache/accumulo/start/spi/CommandGroups.java   | 94 ++++++++++++++++------
 .../accumulo/start/spi/KeywordExecutable.java      |  4 +-
 .../org/apache/accumulo/test/SystemCheckIT.java    | 11 ++-
 .../apache/accumulo/test/start/KeywordStartIT.java | 82 +++++++++----------
 47 files changed, 228 insertions(+), 131 deletions(-)

diff --git a/assemble/bin/accumulo-cluster b/assemble/bin/accumulo-cluster
index 57b75439da..8612613c92 100755
--- a/assemble/bin/accumulo-cluster
+++ b/assemble/bin/accumulo-cluster
@@ -308,7 +308,7 @@ function parse_config() {
 
   RG_FILE="$AC_TMP_DIR/ZooInfoViewer.out"
   debug "Printing resource groups to $RG_FILE"
-  "$accumulo_cmd" other zoo-info-viewer --print-resource-groups >"$RG_FILE" || 
(echo "Error getting resource groups. Did you init?" && exit 1)
+  "$accumulo_cmd" conf zoo-info-viewer --print-resource-groups >"$RG_FILE" || 
(echo "Error getting resource groups. Did you init?" && exit 1)
   read -r -a all_resource_groups <<<"$(grep -F 'Resource Groups: ' "$RG_FILE" 
| cut -c18-)"
   debug "All resource groups: ${all_resource_groups[*]}"
 
@@ -466,7 +466,7 @@ function control_services() {
         fi
       done
       # Try to cleanly stop the TabletServers and Manager
-      if ! "$accumulo_cmd" admin stop-all; then
+      if ! "$accumulo_cmd" proc stop-all; then
         echo "Invalid password or unable to connect to the manager"
         echo "Initiating forced shutdown in 15 seconds (Ctrl-C to abort)"
         sleep 10
@@ -486,9 +486,9 @@ function control_services() {
       for group in $tserver_groups; do
         G="TSERVER_HOSTS_$group"
         for tserver in ${!G}; do
-          debug "Stopping tservers on $addr via admin command"
+          debug "Stopping tservers on $addr via 'proc stop' command"
           if echo "$tserver" | grep -q "$addr"; then
-            debugOrRunAsync "$accumulo_cmd" admin stop "$addr"
+            debugOrRunAsync "$accumulo_cmd" proc stop "$addr"
           fi
         done
       done
@@ -528,7 +528,7 @@ function control_services() {
         # before zapping the nodes in ZooKeeper
         wait
         echo "Cleaning tablet server entries from zookeeper for resource group 
$group"
-        debugOrRunAsync "$accumulo_cmd" other zoo-zap -verbose -tservers 
--include-groups "$group"
+        debugOrRunAsync "$accumulo_cmd" proc zoo-zap -verbose -tservers 
--include-groups "$group"
       fi
       echo "done"
     done
@@ -582,7 +582,7 @@ function control_services() {
         # before zapping the nodes in ZooKeeper
         wait
         echo "Cleaning scan server entries from zookeeper for resource group 
$group"
-        debugOrRunAsync "$accumulo_cmd" other zoo-zap -verbose -sservers 
--include-groups "$group"
+        debugOrRunAsync "$accumulo_cmd" proc zoo-zap -verbose -sservers 
--include-groups "$group"
       fi
     done
   fi
@@ -607,14 +607,14 @@ function control_services() {
         # before zapping the nodes in ZooKeeper
         wait
         echo "Cleaning compactor entries from zookeeper for resource group 
$group"
-        debugOrRunAsync "$accumulo_cmd" other zoo-zap -verbose -compactors 
--include-groups "$group"
+        debugOrRunAsync "$accumulo_cmd" proc zoo-zap -verbose -compactors 
--include-groups "$group"
       fi
     done
   fi
 
   if [[ $ARG_LOCAL == 0 && $ARG_ALL == 1 && ($operation == "stop" || 
$operation == "kill") ]]; then
     debug "Cleaning all server entries in ZooKeeper"
-    debugOrRunAsync "$accumulo_cmd" other zoo-zap -verbose -manager -tservers 
-compactors -sservers --gc --monitor
+    debugOrRunAsync "$accumulo_cmd" proc zoo-zap -verbose -manager -tservers 
-compactors -sservers --gc --monitor
   fi
 
   wait
@@ -674,9 +674,9 @@ function prune_group() {
   esac
 
   if isDebug; then
-    "$accumulo_cmd" other zoo-zap "$lockTypeOpt" -verbose --include-groups 
"$group" --exclude-host-ports "$exclude_file" --dry-run
+    "$accumulo_cmd" proc zoo-zap "$lockTypeOpt" -verbose --include-groups 
"$group" --exclude-host-ports "$exclude_file" --dry-run
   else
-    "$accumulo_cmd" other zoo-zap "$lockTypeOpt" -verbose --include-groups 
"$group" --exclude-host-ports "$exclude_file"
+    "$accumulo_cmd" proc zoo-zap "$lockTypeOpt" -verbose --include-groups 
"$group" --exclude-host-ports "$exclude_file"
   fi
 }
 
@@ -720,7 +720,7 @@ function prune() {
     exit 1
   fi
   local service_json="$AC_TMP_DIR/accumulo-service.json"
-  "$accumulo_cmd" admin service-status --json >"$service_json" 2>/dev/null || 
(echo "Error calling 'admin serviceStatus'" && exit 1)
+  "$accumulo_cmd" inst service-status --json >"$service_json" 2>/dev/null || 
(echo "Error calling 'inst serviceStatus'" && exit 1)
 
   local var_name
   local hosts
diff --git a/assemble/bin/accumulo-service b/assemble/bin/accumulo-service
index af4aa83dea..99cf38a9b7 100755
--- a/assemble/bin/accumulo-service
+++ b/assemble/bin/accumulo-service
@@ -111,7 +111,7 @@ function start_service() {
     rotate_log "$outfile"
     rotate_log "$errfile"
 
-    nohup "${bin}/accumulo" "process" "$service_type" "$@" >"$outfile" 
2>"$errfile" </dev/null &
+    nohup "${bin}/accumulo" "proc" "$service_type" "$@" >"$outfile" 
2>"$errfile" </dev/null &
     echo "$!" >"${pid_file}"
 
   done
diff --git a/assemble/bin/accumulo-util b/assemble/bin/accumulo-util
index 12707e2d69..50669935d7 100755
--- a/assemble/bin/accumulo-util
+++ b/assemble/bin/accumulo-util
@@ -149,7 +149,7 @@ function main() {
       build_native "${@:2}"
       ;;
     dump-zoo)
-      "$bin"/accumulo org.apache.accumulo.server.util.DumpZookeeper "${@:2}"
+      "$bin"/accumulo config dump-zoo "${@:2}"
       ;;
     gen-monitor-cert)
       gen_monitor_cert
diff --git 
a/core/src/main/java/org/apache/accumulo/core/cli/BaseKeywordExecutable.java 
b/core/src/main/java/org/apache/accumulo/core/cli/BaseKeywordExecutable.java
index dc02c129cd..a89d8d3762 100644
--- a/core/src/main/java/org/apache/accumulo/core/cli/BaseKeywordExecutable.java
+++ b/core/src/main/java/org/apache/accumulo/core/cli/BaseKeywordExecutable.java
@@ -18,6 +18,7 @@
  */
 package org.apache.accumulo.core.cli;
 
+import org.apache.accumulo.start.JCommanderParseException;
 import org.apache.accumulo.start.spi.KeywordExecutable;
 
 import com.beust.jcommander.JCommander;
@@ -40,7 +41,7 @@ public abstract class BaseKeywordExecutable<OPTS extends 
Help> implements Keywor
       cl.parse(args);
     } catch (ParameterException e) {
       cl.usage();
-      return;
+      throw new JCommanderParseException();
     }
     this.options.validateArgs();
     if (this.options.help) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java 
b/core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java
index b53c8d3c73..f7d86f1d2d 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/GenerateSplits.java
@@ -120,7 +120,7 @@ public class GenerateSplits extends 
ClientKeywordExecutable<SplitOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.FILE;
   }
 
   @Override
diff --git 
a/core/src/main/java/org/apache/accumulo/core/file/rfile/PrintInfo.java 
b/core/src/main/java/org/apache/accumulo/core/file/rfile/PrintInfo.java
index fcca9510df..ccb8fe1918 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/rfile/PrintInfo.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/PrintInfo.java
@@ -161,7 +161,7 @@ public class PrintInfo extends 
ClientKeywordExecutable<PrintOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.FILE;
   }
 
   protected Class<? extends BiFunction<Key,Value,String>> getFormatter(String 
formatterClazz)
diff --git 
a/core/src/main/java/org/apache/accumulo/core/file/rfile/SplitLarge.java 
b/core/src/main/java/org/apache/accumulo/core/file/rfile/SplitLarge.java
index 7cb2bb9854..a589a23056 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/rfile/SplitLarge.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/SplitLarge.java
@@ -77,7 +77,7 @@ public class SplitLarge extends 
ClientKeywordExecutable<SplitLargeOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.FILE;
   }
 
   @Override
diff --git a/core/src/main/java/org/apache/accumulo/core/util/CreateToken.java 
b/core/src/main/java/org/apache/accumulo/core/util/CreateToken.java
index 4951bedf5b..1c7d5394ed 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/CreateToken.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/CreateToken.java
@@ -76,7 +76,7 @@ public class CreateToken implements KeywordExecutable {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.CLIENT;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/CheckAccumuloProperties.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/CheckAccumuloProperties.java
index 5d3f7c20ec..c9529441d5 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/CheckAccumuloProperties.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/CheckAccumuloProperties.java
@@ -54,7 +54,7 @@ public class CheckAccumuloProperties extends 
ServerKeywordExecutable<ServerOpts>
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.CONFIG;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/CheckCompactionConfig.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/CheckCompactionConfig.java
index c1d0995ff1..4d30b2dba4 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/CheckCompactionConfig.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/CheckCompactionConfig.java
@@ -89,7 +89,7 @@ public class CheckCompactionConfig extends 
ClientKeywordExecutable<CheckOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.CONFIG;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
index 1e0eb37658..e6c6663965 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooInfoViewer.java
@@ -113,7 +113,7 @@ public class ZooInfoViewer extends 
ServerKeywordExecutable<ViewerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.CONFIG;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
index 2931a5423a..8027fa5a61 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/conf/util/ZooPropEditor.java
@@ -87,7 +87,7 @@ public class ZooPropEditor extends 
ServerKeywordExecutable<EditorOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.CONFIG;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java 
b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
index 64db633006..fef9bf98f0 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
@@ -545,7 +545,7 @@ public class Initialize implements KeywordExecutable {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.CORE;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
index 185d286cfa..41e3a513ff 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/CheckForMetadataProblems.java
@@ -64,7 +64,7 @@ public class CheckForMetadataProblems extends 
ServerKeywordExecutable<ServerOpts
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java
index 68bcdfc7cd..14bfbab2ac 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java
@@ -55,7 +55,7 @@ public class DumpZookeeper extends 
ServerKeywordExecutable<DumpZooOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.CONFIG;
   }
 
   private static class Encoded {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
index 2c4ae642d3..339c500f47 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
@@ -65,7 +65,7 @@ public class FindOfflineTablets extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.TABLE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/Info.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/Info.java
index 3e1d71f2ca..6120cf633e 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/Info.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/Info.java
@@ -45,7 +45,7 @@ public class Info extends ServerKeywordExecutable<ServerOpts> 
{
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.CORE;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ListOnlineOnDemandTablets.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/ListOnlineOnDemandTablets.java
index 1a2164cc75..d4c1f61245 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/ListOnlineOnDemandTablets.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/ListOnlineOnDemandTablets.java
@@ -62,7 +62,7 @@ public class ListOnlineOnDemandTablets extends 
ServerKeywordExecutable<ServerOpt
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.TABLE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
index 34a1f0b9df..73e548ceab 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
@@ -51,7 +51,7 @@ public class LoginProperties extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
index 21ae338b01..b5541fa556 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/RemoveEntriesForMissingFiles.java
@@ -244,7 +244,7 @@ public class RemoveEntriesForMissingFiles extends 
ServerKeywordExecutable<Remove
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ScanServerMetadataEntries.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/ScanServerMetadataEntries.java
index 79908ed0b9..5c6fc7d231 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/ScanServerMetadataEntries.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/ScanServerMetadataEntries.java
@@ -51,7 +51,7 @@ public class ScanServerMetadataEntries extends 
ServerKeywordExecutable<ServerOpt
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/UpgradeUtil.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/UpgradeUtil.java
index 85510a35c0..ce592b2465 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/UpgradeUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/UpgradeUtil.java
@@ -113,7 +113,7 @@ public class UpgradeUtil implements KeywordExecutable {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.INSTANCE;
   }
 
   private static class UpgradeUsageFormatter extends DefaultUsageFormatter {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
index 19c0ec48af..68a65d197d 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
@@ -54,7 +54,7 @@ public class ZooKeeperMain extends 
ServerKeywordExecutable<ZKOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.CORE;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
index b508b25fa8..cb64c5017e 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
@@ -75,7 +75,7 @@ public class ZooZap extends ServerKeywordExecutable<ZapOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.PROCESS;
   }
 
   static class ZapOpts extends ServerOpts {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ChangeSecret.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ChangeSecret.java
index e4c66b3989..cd0ec5286c 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ChangeSecret.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ChangeSecret.java
@@ -74,7 +74,7 @@ public class ChangeSecret extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DeleteZooInstance.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DeleteZooInstance.java
index e5fd723845..8d6ee211f6 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DeleteZooInstance.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DeleteZooInstance.java
@@ -73,7 +73,7 @@ public class DeleteZooInstance extends 
ServerKeywordExecutable<DeleteZooInstance
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DumpConfig.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DumpConfig.java
index b1a451e848..ccb210544d 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DumpConfig.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/DumpConfig.java
@@ -127,7 +127,7 @@ public class DumpConfig extends 
ServerKeywordExecutable<DumpConfigOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.CONFIG;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
index 43c8893af1..588a654dde 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java
@@ -193,7 +193,7 @@ public class Fate extends ServerKeywordExecutable<FateOpts> 
{
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListInstances.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListInstances.java
index 992b9fd771..dbb12438c5 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListInstances.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListInstances.java
@@ -84,7 +84,7 @@ public class ListInstances extends 
ServerKeywordExecutable<Opts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListVolumesUsed.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListVolumesUsed.java
index 1d7fc7a2c1..e88d739e10 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListVolumesUsed.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ListVolumesUsed.java
@@ -53,7 +53,7 @@ public class ListVolumesUsed extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Locks.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Locks.java
index 558e095bb9..e2cf1581bf 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Locks.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Locks.java
@@ -41,7 +41,7 @@ public class Locks extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/PingServer.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/PingServer.java
index 2227e8c717..2e552d28da 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/PingServer.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/PingServer.java
@@ -55,7 +55,7 @@ public class PingServer extends 
ServerKeywordExecutable<PingCommandOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.PROCESS;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/RestoreZookeeper.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/RestoreZookeeper.java
index be1b4a6205..2773a4d986 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/RestoreZookeeper.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/RestoreZookeeper.java
@@ -134,7 +134,7 @@ public class RestoreZookeeper extends 
ServerKeywordExecutable<RestoreZooCommandO
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.CONFIG;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ServiceStatus.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ServiceStatus.java
index 3301b7906e..4b6b519d7d 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ServiceStatus.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/ServiceStatus.java
@@ -78,7 +78,7 @@ public class ServiceStatus extends 
ServerKeywordExecutable<ServiceStatusCmdOpts>
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopAll.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopAll.java
index ff1c7ae208..7ed0973537 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopAll.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopAll.java
@@ -60,7 +60,7 @@ public class StopAll extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.PROCESS;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopManager.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopManager.java
index 114c341fe5..61ed136b7b 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopManager.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopManager.java
@@ -44,7 +44,7 @@ public class StopManager extends 
ServerKeywordExecutable<ServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.PROCESS;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopServers.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopServers.java
index c839bc7f14..50e3ad0c9c 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopServers.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/StopServers.java
@@ -88,7 +88,7 @@ public class StopServers extends 
ServerKeywordExecutable<StopServerOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.PROCESS;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/SystemCheck.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/SystemCheck.java
index 8519e382e9..af043fd4a9 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/SystemCheck.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/SystemCheck.java
@@ -170,7 +170,7 @@ public class SystemCheck extends 
ServerKeywordExecutable<CheckCommandOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/VerifyTabletAssignments.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/VerifyTabletAssignments.java
index fadc909bdc..85d82c17d0 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/VerifyTabletAssignments.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/VerifyTabletAssignments.java
@@ -92,7 +92,7 @@ public class VerifyTabletAssignments extends 
ServerKeywordExecutable<VerifyTable
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.ADMIN;
+    return CommandGroups.INSTANCE;
   }
 
   @Override
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
index d505d74a0e..407a8f5939 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/logger/LogReader.java
@@ -102,7 +102,7 @@ public class LogReader extends 
ServerKeywordExecutable<ReaderOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.FILE;
   }
 
   @Override
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/util/CreateEmpty.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/util/CreateEmpty.java
index 039414a31d..3fb809d028 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/util/CreateEmpty.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/util/CreateEmpty.java
@@ -130,7 +130,7 @@ public class CreateEmpty extends 
ServerKeywordExecutable<CreateEmptyOpts> {
 
   @Override
   public CommandGroup commandGroup() {
-    return CommandGroups.OTHER;
+    return CommandGroups.FILE;
   }
 
   @Override
diff --git 
a/start/src/main/java/org/apache/accumulo/start/JCommanderParseException.java 
b/start/src/main/java/org/apache/accumulo/start/JCommanderParseException.java
new file mode 100644
index 0000000000..ce7b10efb5
--- /dev/null
+++ 
b/start/src/main/java/org/apache/accumulo/start/JCommanderParseException.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.accumulo.start;
+
+public class JCommanderParseException extends RuntimeException {
+
+  private static final long serialVersionUID = 1L;
+
+}
diff --git a/start/src/main/java/org/apache/accumulo/start/Main.java 
b/start/src/main/java/org/apache/accumulo/start/Main.java
index ee1029d3f2..e7355c04ce 100644
--- a/start/src/main/java/org/apache/accumulo/start/Main.java
+++ b/start/src/main/java/org/apache/accumulo/start/Main.java
@@ -113,6 +113,8 @@ public class Main {
     Runnable r = () -> {
       try {
         keywordExec.execute(args);
+      } catch (JCommanderParseException e) {
+        System.exit(1);
       } catch (Exception e) {
         die(e, null);
       }
@@ -193,26 +195,42 @@ public class Main {
 
   public static void printUsage() {
 
-    System.out.println("\nUsage one of:");
-    System.out.println("    accumulo --help");
-    System.out.println("    accumulo classpath");
-    System.out.println("    accumulo jshell (<argument> ...)");
-    System.out.println("    accumulo className (<argument> ...)");
-    System.out.println("    accumulo <command>* <subcommand> [--help] 
(<argument> ...)");
-    System.out.println("    * client commands can be run using 'accumulo 
<subcommand> ...'\n");
+    final String header =
+        """
+
+            Usage one of:
+                accumulo --help
+                    Prints this help
+
+                accumulo classpath
+                    Prints the classpath for the accumulo script
+
+                accumulo jshell [ARG]...
+                    Starts a Java JShell session for use with an Accumulo 
instance
+
+                accumulo className [ARG]...
+                    Executes a Java class passing the provided arguments
+
+                accumulo <command> <subcommand> --help | [ARG]...
+                    Provides a common execution environment to run various 
Accumulo related commands and subcommands.
+                    Client commands support a shorter command structure where 
the command does not have to be specified,
+                    'accumulo shell' instead of 'accumulo client shell', for 
example. Commands other than 'client'
+                    require access to the accumulo.properties file for the 
instance.
+            """;
+
+    System.out.println(header);
 
     Map<CommandGroup,Map<String,KeywordExecutable>> executables = 
getExecutables(getClassLoader());
 
-    System.out.println(CommandGroups.CLIENT.title() + " Commands:");
+    System.out.println(CommandGroups.CLIENT.title() + " Commands (accumulo 
<command>):");
     executables.get(CommandGroups.CLIENT).entrySet().forEach(ce -> {
       System.out.printf("  %-30s %s\n", ce.getValue().usage(), 
ce.getValue().description());
     });
 
-    System.out.println("\nThe following commands require access to the 
accumulo.properties file\n");
-
     executables.entrySet().forEach(e -> {
       if (e.getKey() != CommandGroups.CLIENT) {
-        System.out.println("\n" + e.getKey().title() + " Commands:");
+        System.out.println(
+            "\n" + e.getKey().title() + " Commands (accumulo " + 
e.getKey().key() + " <command>):");
         e.getValue().values()
             .forEach(ke -> System.out.printf("  %-30s %s\n", ke.usage(), 
ke.description()));
       }
diff --git 
a/start/src/main/java/org/apache/accumulo/start/spi/CommandGroups.java 
b/start/src/main/java/org/apache/accumulo/start/spi/CommandGroups.java
index 992094f5dd..252bbeedf2 100644
--- a/start/src/main/java/org/apache/accumulo/start/spi/CommandGroups.java
+++ b/start/src/main/java/org/apache/accumulo/start/spi/CommandGroups.java
@@ -25,12 +25,14 @@ import java.util.Objects;
  */
 public class CommandGroups {
 
-  public static final CommandGroup ADMIN = new AdminCommandGroup();
   public static final CommandGroup CLIENT = new ClientCommandGroup();
   public static final CommandGroup COMPACTION = new CompactionCommandGroup();
-  public static final CommandGroup CORE = new CoreCommandGroup();
+  public static final CommandGroup CONFIG = new ConfigCommandGroup();
+  public static final CommandGroup FILE = new FileCommandGroup();
+  public static final CommandGroup INSTANCE = new InstanceCommandGroup();
   public static final CommandGroup OTHER = new OtherCommandGroup();
   public static final CommandGroup PROCESS = new ProcessCommandGroup();
+  public static final CommandGroup TABLE = new TableCommandGroup();
 
   /**
    * @since 4.0.0
@@ -61,92 +63,115 @@ public class CommandGroups {
   /**
    * @since 4.0.0
    */
-  public static class AdminCommandGroup extends BaseCommandGroup {
+  public static class ClientCommandGroup extends BaseCommandGroup {
 
-    private AdminCommandGroup() {}
+    private ClientCommandGroup() {}
 
     @Override
     public String key() {
-      return "admin";
+      return "";
     }
 
     @Override
     public String title() {
-      return "Admin";
+      return "Client";
     }
 
     @Override
     public String description() {
-      return "Administrative commands.";
+      return "Client commands";
     }
   }
 
   /**
    * @since 4.0.0
    */
-  public static class ClientCommandGroup extends BaseCommandGroup {
+  public static class CompactionCommandGroup extends BaseCommandGroup {
 
-    private ClientCommandGroup() {}
+    private CompactionCommandGroup() {}
 
     @Override
     public String key() {
-      return "";
+      return "compact";
     }
 
     @Override
     public String title() {
-      return "Client";
+      return "Compaction";
     }
 
     @Override
     public String description() {
-      return "Client commands, requires accumulo-client.properties only, group 
is optional in command.";
+      return "Compaction related commands";
     }
   }
 
   /**
    * @since 4.0.0
    */
-  public static class CompactionCommandGroup extends BaseCommandGroup {
+  public static class ConfigCommandGroup extends BaseCommandGroup {
 
-    private CompactionCommandGroup() {}
+    private ConfigCommandGroup() {}
 
     @Override
     public String key() {
-      return "compaction";
+      return "conf";
     }
 
     @Override
     public String title() {
-      return "Compaction";
+      return "Configuration";
     }
 
     @Override
     public String description() {
-      return "Compaction related commands";
+      return "Configuration related commands";
+    }
+  }
+
+  /**
+   * @since 4.0.0
+   */
+  public static class FileCommandGroup extends BaseCommandGroup {
+
+    private FileCommandGroup() {}
+
+    @Override
+    public String key() {
+      return "file";
+    }
+
+    @Override
+    public String title() {
+      return "File";
+    }
+
+    @Override
+    public String description() {
+      return "File related commands";
     }
   }
 
   /**
    * @since 4.0.0
    */
-  public static class CoreCommandGroup extends BaseCommandGroup {
+  public static class InstanceCommandGroup extends BaseCommandGroup {
 
-    private CoreCommandGroup() {}
+    private InstanceCommandGroup() {}
 
     @Override
     public String key() {
-      return "core";
+      return "inst";
     }
 
     @Override
     public String title() {
-      return "Core";
+      return "Instance";
     }
 
     @Override
     public String description() {
-      return "Core commands";
+      return "Instance related commands";
     }
   }
 
@@ -159,7 +184,7 @@ public class CommandGroups {
 
     @Override
     public String key() {
-      return "process";
+      return "proc";
     }
 
     @Override
@@ -196,4 +221,27 @@ public class CommandGroups {
     }
   }
 
+  /**
+   * @since 4.0.0
+   */
+  public static class TableCommandGroup extends BaseCommandGroup {
+
+    private TableCommandGroup() {}
+
+    @Override
+    public String key() {
+      return "table";
+    }
+
+    @Override
+    public String title() {
+      return "Table";
+    }
+
+    @Override
+    public String description() {
+      return "Table related commands";
+    }
+  }
+
 }
diff --git 
a/start/src/main/java/org/apache/accumulo/start/spi/KeywordExecutable.java 
b/start/src/main/java/org/apache/accumulo/start/spi/KeywordExecutable.java
index e4e87d0dc3..14b1357537 100644
--- a/start/src/main/java/org/apache/accumulo/start/spi/KeywordExecutable.java
+++ b/start/src/main/java/org/apache/accumulo/start/spi/KeywordExecutable.java
@@ -73,7 +73,9 @@ public interface KeywordExecutable {
    * @return CommandGroup for this command
    * @since 4.0.0
    */
-  CommandGroup commandGroup();
+  default CommandGroup commandGroup() {
+    return CommandGroups.OTHER;
+  }
 
   /**
    * @return Description of service
diff --git a/test/src/main/java/org/apache/accumulo/test/SystemCheckIT.java 
b/test/src/main/java/org/apache/accumulo/test/SystemCheckIT.java
index 4f2f13fedc..fd20571dad 100644
--- a/test/src/main/java/org/apache/accumulo/test/SystemCheckIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/SystemCheckIT.java
@@ -142,7 +142,7 @@ public class SystemCheckIT extends ConfigurableMacBase {
     // no provided pattern
     p = getCluster().exec(SystemCheck.class, "run", "--name_pattern");
     assertNotEquals(0, p.getProcess().waitFor());
-    assertTrue(p.readStdOut().contains("ParameterException"));
+    assertTrue(p.readStdOut().contains("Usage:"));
     // no checks match pattern
     p = getCluster().exec(SystemCheck.class, "run", "--name_pattern", "abc");
     assertNotEquals(0, p.getProcess().waitFor());
@@ -666,7 +666,14 @@ public class SystemCheckIT extends ConfigurableMacBase {
 
   private SystemCheck createDummyCheckCommand(boolean[] checksPass) throws 
Exception {
     DummyCheckCommand opts = new DummyCheckCommand(checksPass);
-    SystemCheck check = new SystemCheck(opts);
+    SystemCheck check = new SystemCheck(opts) {
+
+      @Override
+      public ServerContext getServerContext() {
+        return getCluster().getServerContext();
+      }
+
+    };
     return check;
   }
 
diff --git 
a/test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java 
b/test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java
index 28452c50ac..39cb6e539b 100644
--- a/test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java
@@ -183,76 +183,77 @@ public class KeywordStartIT {
     SortedSet<CommandInfo> expectSet = new TreeSet<>();
     expectSet.add(new CommandInfo(TestCommandGroup.INSTANCE, "binary-rows", 
TestBinaryRows.class));
     expectSet.add(new CommandInfo(CommandGroups.COMPACTION, "cancel", 
CancelCompaction.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "change-secret", 
ChangeSecret.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "check", 
SystemCheck.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, 
"check-accumulo-properties",
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "change-secret", 
ChangeSecret.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "check", 
SystemCheck.class));
+    expectSet.add(new CommandInfo(CommandGroups.CONFIG, 
"check-accumulo-properties",
         CheckAccumuloProperties.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, 
"check-compaction-config",
+    expectSet.add(new CommandInfo(CommandGroups.CONFIG, 
"check-compaction-config",
         CheckCompactionConfig.class));
     expectSet.add(
-        new CommandInfo(CommandGroups.ADMIN, "check-metadata", 
CheckForMetadataProblems.class));
+        new CommandInfo(CommandGroups.INSTANCE, "check-metadata", 
CheckForMetadataProblems.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "compactor", 
CompactorExecutable.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "create-empty", 
CreateEmpty.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "create-token", 
CreateToken.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "delete-instance", 
DeleteZooInstance.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "dump-config", 
DumpConfig.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "dump-zoo", 
DumpZookeeper.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "fate", Fate.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, 
"find-online-ondemand-tablets",
+    expectSet.add(new CommandInfo(CommandGroups.FILE, "create-empty", 
CreateEmpty.class));
+    expectSet.add(new CommandInfo(CommandGroups.CLIENT, "create-token", 
CreateToken.class));
+    expectSet
+        .add(new CommandInfo(CommandGroups.INSTANCE, "delete-instance", 
DeleteZooInstance.class));
+    expectSet.add(new CommandInfo(CommandGroups.CONFIG, "dump-config", 
DumpConfig.class));
+    expectSet.add(new CommandInfo(CommandGroups.CONFIG, "dump-zoo", 
DumpZookeeper.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "fate", Fate.class));
+    expectSet.add(new CommandInfo(CommandGroups.TABLE, 
"find-online-ondemand-tablets",
         ListOnlineOnDemandTablets.class));
     expectSet.add(
-        new CommandInfo(CommandGroups.ADMIN, "find-offline-tablets", 
FindOfflineTablets.class));
+        new CommandInfo(CommandGroups.TABLE, "find-offline-tablets", 
FindOfflineTablets.class));
     expectSet.add(
         new CommandInfo(CommandGroups.COMPACTION, "find-tmp-files", 
FindCompactionTmpFiles.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "gc", 
GCExecutable.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "generate-splits", 
GenerateSplits.class));
+    expectSet.add(new CommandInfo(CommandGroups.FILE, "generate-splits", 
GenerateSplits.class));
     expectSet.add(new CommandInfo(CommandGroups.CLIENT, "help", Help.class));
-    expectSet.add(new CommandInfo(CommandGroups.CORE, "info", Info.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "info", Info.class));
     expectSet.add(new CommandInfo(TestCommandGroup.INSTANCE, "ingest", 
TestIngest.class));
-    expectSet.add(new CommandInfo(CommandGroups.CORE, "init", 
Initialize.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "list-instances", 
ListInstances.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "init", 
Initialize.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "list-instances", 
ListInstances.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "list-compactors", 
ListCompactors.class));
     expectSet.add(new CommandInfo(CommandGroups.COMPACTION, "list", 
ListCompactions.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "list-volumes", 
ListVolumesUsed.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "locks", Locks.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "login-info", 
LoginProperties.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "list-volumes", 
ListVolumesUsed.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "locks", 
Locks.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "login-info", 
LoginProperties.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "manager", 
ManagerExecutable.class));
     expectSet
         .add(new CommandInfo(CommandGroups.PROCESS, "minicluster", 
MiniClusterExecutable.class));
-    expectSet.add(
-        new CommandInfo(CommandGroups.ADMIN, "missing-files", 
RemoveEntriesForMissingFiles.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "missing-files",
+        RemoveEntriesForMissingFiles.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "monitor", 
MonitorExecutable.class));
     expectSet.add(new CommandInfo(TestCommandGroup.INSTANCE, 
"multi-table-ingest",
         TestMultiTableIngest.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "ping", 
PingServer.class));
+    expectSet.add(new CommandInfo(CommandGroups.PROCESS, "ping", 
PingServer.class));
     expectSet
         .add(new CommandInfo(TestCommandGroup.INSTANCE, "random-deletes", 
TestRandomDeletes.class));
     expectSet.add(new CommandInfo(TestCommandGroup.INSTANCE, "random-writer", 
RandomWriter.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, 
"remove-scan-server-references",
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, 
"remove-scan-server-references",
         ScanServerMetadataEntries.class));
     expectSet
-        .add(new CommandInfo(CommandGroups.ADMIN, "restore-zookeeper", 
RestoreZookeeper.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "rfile-info", 
PrintInfo.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "service-status", 
ServiceStatus.class));
+        .add(new CommandInfo(CommandGroups.CONFIG, "restore-zookeeper", 
RestoreZookeeper.class));
+    expectSet.add(new CommandInfo(CommandGroups.FILE, "rfile-info", 
PrintInfo.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "service-status", 
ServiceStatus.class));
     expectSet.add(new CommandInfo(CommandGroups.CLIENT, "shell", Shell.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "split-large", 
SplitLarge.class));
+    expectSet.add(new CommandInfo(CommandGroups.FILE, "split-large", 
SplitLarge.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "sserver", 
ScanServerExecutable.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "stop-all", 
StopAll.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "stop-manager", 
StopManager.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, "stop-servers", 
StopServers.class));
+    expectSet.add(new CommandInfo(CommandGroups.PROCESS, "stop-all", 
StopAll.class));
+    expectSet.add(new CommandInfo(CommandGroups.PROCESS, "stop-manager", 
StopManager.class));
+    expectSet.add(new CommandInfo(CommandGroups.PROCESS, "stop-servers", 
StopServers.class));
     expectSet
         .add(new CommandInfo(TestCommandGroup.INSTANCE, "tablet-stats", 
CollectTabletStats.class));
     expectSet.add(new CommandInfo(CommandGroups.PROCESS, "tserver", 
TServerExecutable.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "upgrade", 
UpgradeUtil.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "upgrade", 
UpgradeUtil.class));
     expectSet.add(new CommandInfo(TestCommandGroup.INSTANCE, "verify-ingest", 
VerifyIngest.class));
-    expectSet.add(new CommandInfo(CommandGroups.ADMIN, 
"verify-tablet-assignments",
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, 
"verify-tablet-assignments",
         VerifyTabletAssignments.class));
     expectSet.add(new CommandInfo(CommandGroups.CLIENT, "version", 
Version.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "wal-info", 
LogReader.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "zoo-info-viewer", 
ZooInfoViewer.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "zoo-prop-editor", 
ZooPropEditor.class));
-    expectSet.add(new CommandInfo(CommandGroups.OTHER, "zoo-zap", 
ZooZap.class));
-    expectSet.add(new CommandInfo(CommandGroups.PROCESS, "zookeeper", 
ZooKeeperMain.class));
+    expectSet.add(new CommandInfo(CommandGroups.FILE, "wal-info", 
LogReader.class));
+    expectSet.add(new CommandInfo(CommandGroups.CONFIG, "zoo-info-viewer", 
ZooInfoViewer.class));
+    expectSet.add(new CommandInfo(CommandGroups.CONFIG, "zoo-prop-editor", 
ZooPropEditor.class));
+    expectSet.add(new CommandInfo(CommandGroups.PROCESS, "zoo-zap", 
ZooZap.class));
+    expectSet.add(new CommandInfo(CommandGroups.INSTANCE, "zk-cli", 
ZooKeeperMain.class));
 
     Map<CommandGroup,Map<String,KeywordExecutable>> actualExecutables = 
getKeywordExecutables();
     SortedSet<CommandInfo> actualSet = new TreeSet<>();
@@ -375,11 +376,6 @@ public class KeywordStartIT {
       return kw;
     }
 
-    @Override
-    public CommandGroup commandGroup() {
-      return CommandGroups.OTHER;
-    }
-
     @Override
     public void execute(String[] args) {}
 

Reply via email to