keith-turner commented on code in PR #3484:
URL: https://github.com/apache/accumulo/pull/3484#discussion_r1227374072


##########
minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java:
##########
@@ -614,8 +623,50 @@ public synchronized void start() throws IOException, 
InterruptedException {
       executor = Executors.newSingleThreadExecutor();
     }
 
+    Set<String> queues = getCompactionQueueNames();
+    if (queues.isEmpty()) {
+      throw new IllegalStateException("No Compactor queues configured.");
+    }
+
+    for (String name : queues) {
+      control.startCompactors(Compactor.class, getConfig().getNumCompactors(), 
name);
+    }
+
     verifyUp();
 
+    printProcessSummary();
+
+  }
+
+  private void printProcessSummary() {
+    log.info("Process Summary:");
+    getProcesses().forEach((k, v) -> log.info("{}: {}", k,
+        v.stream().map((pr) -> 
pr.getProcess().pid()).collect(Collectors.toList())));
+  }
+
+  private Set<String> getCompactionQueueNames() {
+
+    Set<String> queueNames = new HashSet<>();
+    AccumuloConfiguration aconf = new 
ConfigurationCopy(config.getSiteConfig());
+    CompactionServicesConfig csc = new CompactionServicesConfig(aconf);
+    ServiceEnvironment senv = new ServiceEnvironmentImpl(getServerContext());
+
+    for (var entry : csc.getPlanners().entrySet()) {
+      String serviceId = entry.getKey();
+
+      var initParams = new 
CompactionPlannerInitParams(CompactionServiceId.of(serviceId),
+          csc.getOptions().get(serviceId), senv);
+
+      ExecutorConfig[] execConfigs =
+          new Gson().fromJson(initParams.getOptions().get("executors"), 
ExecutorConfig[].class);
+
+      for (ExecutorConfig ec : execConfigs) {
+        if (ec.getQueue() != null) {
+          queueNames.add(ec.getQueue());
+        }
+      }

Review Comment:
   The code is assuming the DefaultCompactionPlanner is configured.  The 
following is an attempt to instantiate whatever planner is configured, 
initiatlize it with its config, and then get the external executors it 
configured.
   
   ```suggestion
         String serviceId = entry.getKey();
         String plannerClass = entry.getValue();
         
         CompactionPlanner planner = // create instance of plannerClass
   
         var initParams = new 
CompactionPlannerInitParams(CompactionServiceId.of(serviceId),
             csc.getOptions().get(serviceId), senv);
   
        planner.init(initParams);
   
         // TODO may need to strip "e." prefix from ceid.canonical() below
         
initParams.getRequestedExternalExecutors().forEach(ceid->queueNames.add(ceid.canonical()));
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to