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 15ab803d6d Fixed ECAdmin.listCompactorsByQueue (#6092)
15ab803d6d is described below

commit 15ab803d6d20d6bdb13c5b8e1630b1cbcc04fc79
Author: Dave Marion <[email protected]>
AuthorDate: Thu Jan 29 15:00:58 2026 -0500

    Fixed ECAdmin.listCompactorsByQueue (#6092)
    
    Closes #6084
---
 .../org/apache/accumulo/server/util/ECAdmin.java   | 19 +++++++++----
 .../java/org/apache/accumulo/test/ECAdminIT.java   | 32 ++++++++++++++++++++--
 2 files changed, 43 insertions(+), 8 deletions(-)

diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ECAdmin.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/ECAdmin.java
index fcee95c1e3..8e4afe6f91 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/ECAdmin.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/ECAdmin.java
@@ -233,7 +233,16 @@ public class ECAdmin implements KeywordExecutable {
     ServerContext context = opts.getServerContext();
     try {
       if (cl.getParsedCommand().equals("listCompactors")) {
-        listCompactorsByQueue(context);
+        var map = listCompactorsByQueue(context);
+        if (map.isEmpty()) {
+          System.out.println("No Compactors found.");
+        } else {
+          map.forEach((q, c) -> {
+            System.out.println(q);
+            System.out.println("-".repeat(q.toString().length()));
+            c.forEach(s -> System.out.println("\t" + s.toHostPortString()));
+          });
+        }
       } else if (cl.getParsedCommand().equals("cancel")) {
         cancelCompaction(context, cancelOps.ecid);
       } else if (cl.getParsedCommand().equals("running")) {
@@ -274,16 +283,16 @@ public class ECAdmin implements KeywordExecutable {
     }
   }
 
-  protected void listCompactorsByQueue(ServerContext context) {
+  protected Map<ResourceGroupId,List<ServerId>> 
listCompactorsByQueue(ServerContext context) {
     Set<ServerId> compactors = 
context.instanceOperations().getServers(ServerId.Type.COMPACTOR);
     if (compactors.isEmpty()) {
-      System.out.println("No Compactors found.");
+      return Map.of();
     } else {
       Map<ResourceGroupId,List<ServerId>> m = new TreeMap<>();
       compactors.forEach(csi -> {
-        m.putIfAbsent(csi.getResourceGroup(), new ArrayList<>()).add(csi);
+        m.computeIfAbsent(csi.getResourceGroup(), (r) -> new 
ArrayList<>()).add(csi);
       });
-      m.forEach((q, c) -> System.out.println(q + ": " + c));
+      return m;
     }
   }
 
diff --git a/test/src/main/java/org/apache/accumulo/test/ECAdminIT.java 
b/test/src/main/java/org/apache/accumulo/test/ECAdminIT.java
index b858316a78..07c7de23f3 100644
--- a/test/src/main/java/org/apache/accumulo/test/ECAdminIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ECAdminIT.java
@@ -18,12 +18,20 @@
  */
 package org.apache.accumulo.test;
 
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP1;
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP2;
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP3;
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP4;
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP5;
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP6;
 import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP7;
+import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.GROUP8;
 import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.compact;
 import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.createTable;
 import static 
org.apache.accumulo.test.compaction.ExternalCompactionTestUtils.writeData;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.lang.reflect.Type;
 import java.util.ArrayList;
@@ -36,7 +44,9 @@ import java.util.Optional;
 import org.apache.accumulo.core.client.Accumulo;
 import org.apache.accumulo.core.client.AccumuloClient;
 import org.apache.accumulo.core.client.IteratorSetting;
+import org.apache.accumulo.core.client.admin.servers.ServerId;
 import org.apache.accumulo.core.compaction.thrift.TExternalCompactionMap;
+import org.apache.accumulo.core.data.ResourceGroupId;
 import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
 import org.apache.accumulo.core.util.compaction.ExternalCompactionUtil;
 import org.apache.accumulo.harness.MiniClusterConfigurationCallback;
@@ -68,8 +78,8 @@ public class ECAdminIT extends SharedMiniClusterBase {
     }
 
     @Override
-    protected void listCompactorsByQueue(ServerContext context) {
-      super.listCompactorsByQueue(context);
+    protected Map<ResourceGroupId,List<ServerId>> 
listCompactorsByQueue(ServerContext context) {
+      return super.listCompactorsByQueue(context);
     }
 
     @Override
@@ -84,7 +94,6 @@ public class ECAdminIT extends SharedMiniClusterBase {
     @Override
     public void configureMiniCluster(MiniAccumuloConfigImpl cfg, Configuration 
coreSite) {
       ExternalCompactionTestUtils.configureMiniCluster(cfg, coreSite);
-      cfg.getClusterServerConfiguration().addCompactorResourceGroup(GROUP7, 1);
     }
 
   }
@@ -101,6 +110,23 @@ public class ECAdminIT extends SharedMiniClusterBase {
 
   private final TestECAdmin eca = new TestECAdmin();
 
+  @Test
+  public void testListCompactors() throws Exception {
+    final Map<ResourceGroupId,List<ServerId>> compactors =
+        eca.listCompactorsByQueue(getCluster().getServerContext());
+    System.out.println(compactors);
+    assertEquals(9, compactors.size());
+    assertTrue(compactors.containsKey(ResourceGroupId.DEFAULT));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP1)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP2)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP3)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP4)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP5)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP6)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP7)));
+    assertTrue(compactors.containsKey(ResourceGroupId.of(GROUP8)));
+  }
+
   @Test
   public void testListRunningCompactions() throws Exception {
 

Reply via email to