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

kturner 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 491c0d6c7e Removes running cache from coordinator (#6244)
491c0d6c7e is described below

commit 491c0d6c7e9253f9fbc1c475dcc890c2149a7ef8
Author: Keith Turner <[email protected]>
AuthorDate: Thu Mar 26 11:32:19 2026 -0400

    Removes running cache from coordinator (#6244)
---
 .../util/compaction/ExternalCompactionUtil.java    |   1 -
 .../thrift/CompactionCoordinatorService.java       | 728 ---------------------
 .../core/compaction/thrift/CompactorService.java   |  36 +-
 .../compaction/thrift/TExternalCompactionMap.java  | 471 -------------
 core/src/main/thrift/compaction-coordinator.thrift |  11 -
 .../server/compaction/CompactionPluginUtils.java   |  35 +
 .../java/org/apache/accumulo/manager/Manager.java  |   6 -
 .../coordinator/CompactionCoordinator.java         | 228 +------
 .../coordinator/commit/PutGcCandidates.java        |   2 -
 .../coordinator/commit/RefreshTablet.java          |   3 -
 .../accumulo/manager/fate/FateWorkerEnv.java       |  23 -
 .../apache/accumulo/manager/tableOps/FateEnv.java  |   3 -
 .../compaction/CompactionCoordinatorTest.java      | 111 ----
 .../accumulo/monitor/next/InformationFetcher.java  |  10 +
 .../accumulo/monitor/next/SystemInformation.java   |  15 +
 15 files changed, 80 insertions(+), 1603 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
 
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
index b11285c0e3..149c12e12b 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
@@ -340,5 +340,4 @@ public class ExternalCompactionUtil {
       throw new IllegalStateException("Exception calling cancel compaction for 
" + ecid, e);
     }
   }
-
 }
diff --git 
a/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactionCoordinatorService.java
 
b/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactionCoordinatorService.java
index cf40536be8..4f446373ac 100644
--- 
a/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactionCoordinatorService.java
+++ 
b/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactionCoordinatorService.java
@@ -37,8 +37,6 @@ public class CompactionCoordinatorService {
 
     public void 
compactionFailed(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId, 
org.apache.accumulo.core.dataImpl.thrift.TKeyExtent extent, java.lang.String 
exceptionClassName, TCompactionState failureState, java.lang.String groupName, 
java.lang.String compactor) throws 
org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException, 
org.apache.accumulo.core.clientImp [...]
 
-    public void 
recordCompletion(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId) throws org.apache.thrift.TException;
-
   }
 
   public interface AsyncIface {
@@ -51,8 +49,6 @@ public class CompactionCoordinatorService {
 
     public void 
compactionFailed(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId, 
org.apache.accumulo.core.dataImpl.thrift.TKeyExtent extent, java.lang.String 
exceptionClassName, TCompactionState failureState, java.lang.String groupName, 
java.lang.String compactor, org.apache.thrift.async.AsyncMethodCallback<Void> 
resultHandler) throws org.apache.thrift.TException;
 
-    public void 
recordCompletion(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId, 
org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws 
org.apache.thrift.TException;
-
   }
 
   public static class Client extends org.apache.thrift.TServiceClient 
implements Iface {
@@ -209,21 +205,6 @@ public class CompactionCoordinatorService {
       return;
     }
 
-    @Override
-    public void 
recordCompletion(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId) throws org.apache.thrift.TException
-    {
-      send_recordCompletion(tinfo, credentials, externalCompactionId);
-    }
-
-    public void 
send_recordCompletion(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId) throws org.apache.thrift.TException
-    {
-      recordCompletion_args args = new recordCompletion_args();
-      args.setTinfo(tinfo);
-      args.setCredentials(credentials);
-      args.setExternalCompactionId(externalCompactionId);
-      sendBaseOneway("recordCompletion", args);
-    }
-
   }
   public static class AsyncClient extends org.apache.thrift.async.TAsyncClient 
implements AsyncIface {
     public static class Factory implements 
org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
@@ -449,47 +430,6 @@ public class CompactionCoordinatorService {
       }
     }
 
-    @Override
-    public void 
recordCompletion(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId, 
org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws 
org.apache.thrift.TException {
-      checkReady();
-      recordCompletion_call method_call = new recordCompletion_call(tinfo, 
credentials, externalCompactionId, resultHandler, this, ___protocolFactory, 
___transport);
-      this.___currentMethod = method_call;
-      ___manager.call(method_call);
-    }
-
-    public static class recordCompletion_call extends 
org.apache.thrift.async.TAsyncMethodCall<Void> {
-      private org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo;
-      private org.apache.accumulo.core.securityImpl.thrift.TCredentials 
credentials;
-      private java.lang.String externalCompactionId;
-      public 
recordCompletion_call(org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo, 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials, 
java.lang.String externalCompactionId, 
org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler, 
org.apache.thrift.async.TAsyncClient client, 
org.apache.thrift.protocol.TProtocolFactory protocolFactory, 
org.apache.thrift.transport.TNonblockingTransport transport) throws 
org.apache.thrift.TException {
-        super(client, protocolFactory, transport, resultHandler, true);
-        this.tinfo = tinfo;
-        this.credentials = credentials;
-        this.externalCompactionId = externalCompactionId;
-      }
-
-      @Override
-      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws 
org.apache.thrift.TException {
-        prot.writeMessageBegin(new 
org.apache.thrift.protocol.TMessage("recordCompletion", 
org.apache.thrift.protocol.TMessageType.ONEWAY, 0));
-        recordCompletion_args args = new recordCompletion_args();
-        args.setTinfo(tinfo);
-        args.setCredentials(credentials);
-        args.setExternalCompactionId(externalCompactionId);
-        args.write(prot);
-        prot.writeMessageEnd();
-      }
-
-      @Override
-      public Void getResult() throws org.apache.thrift.TException {
-        if (getState() != 
org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
-          throw new java.lang.IllegalStateException("Method call not 
finished!");
-        }
-        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = 
new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
-        org.apache.thrift.protocol.TProtocol prot = 
client.getProtocolFactory().getProtocol(memoryTransport);
-        return null;
-      }
-    }
-
   }
 
   public static class Processor<I extends Iface> extends 
org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
@@ -507,7 +447,6 @@ public class CompactionCoordinatorService {
       processMap.put("getCompactionJob", new getCompactionJob());
       processMap.put("updateCompactionStatus", new updateCompactionStatus());
       processMap.put("compactionFailed", new compactionFailed());
-      processMap.put("recordCompletion", new recordCompletion());
       return processMap;
     }
 
@@ -647,33 +586,6 @@ public class CompactionCoordinatorService {
       }
     }
 
-    public static class recordCompletion<I extends Iface> extends 
org.apache.thrift.ProcessFunction<I, recordCompletion_args> {
-      public recordCompletion() {
-        super("recordCompletion");
-      }
-
-      @Override
-      public recordCompletion_args getEmptyArgsInstance() {
-        return new recordCompletion_args();
-      }
-
-      @Override
-      protected boolean isOneway() {
-        return true;
-      }
-
-      @Override
-      protected boolean rethrowUnhandledExceptions() {
-        return false;
-      }
-
-      @Override
-      public org.apache.thrift.TBase getResult(I iface, recordCompletion_args 
args) throws org.apache.thrift.TException {
-        iface.recordCompletion(args.tinfo, args.credentials, 
args.externalCompactionId);
-        return null;
-      }
-    }
-
   }
 
   public static class AsyncProcessor<I extends AsyncIface> extends 
org.apache.thrift.TBaseAsyncProcessor<I> {
@@ -691,7 +603,6 @@ public class CompactionCoordinatorService {
       processMap.put("getCompactionJob", new getCompactionJob());
       processMap.put("updateCompactionStatus", new updateCompactionStatus());
       processMap.put("compactionFailed", new compactionFailed());
-      processMap.put("recordCompletion", new recordCompletion());
       return processMap;
     }
 
@@ -992,46 +903,6 @@ public class CompactionCoordinatorService {
       }
     }
 
-    public static class recordCompletion<I extends AsyncIface> extends 
org.apache.thrift.AsyncProcessFunction<I, recordCompletion_args, Void> {
-      public recordCompletion() {
-        super("recordCompletion");
-      }
-
-      @Override
-      public recordCompletion_args getEmptyArgsInstance() {
-        return new recordCompletion_args();
-      }
-
-      @Override
-      public org.apache.thrift.async.AsyncMethodCallback<Void> 
getResultHandler(final 
org.apache.thrift.server.AbstractNonblockingServer.AsyncFrameBuffer fb, final 
int seqid) {
-        final org.apache.thrift.AsyncProcessFunction fcall = this;
-        return new org.apache.thrift.async.AsyncMethodCallback<Void>() { 
-          @Override
-          public void onComplete(Void o) {
-          }
-          @Override
-          public void onError(java.lang.Exception e) {
-            if (e instanceof org.apache.thrift.transport.TTransportException) {
-              _LOGGER.error("TTransportException inside handler", e);
-              fb.close();
-            } else {
-              _LOGGER.error("Exception inside oneway handler", e);
-            }
-          }
-        };
-      }
-
-      @Override
-      protected boolean isOneway() {
-        return true;
-      }
-
-      @Override
-      public void start(I iface, recordCompletion_args args, 
org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws 
org.apache.thrift.TException {
-        iface.recordCompletion(args.tinfo, args.credentials, 
args.externalCompactionId,resultHandler);
-      }
-    }
-
   }
 
   @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
@@ -6884,604 +6755,5 @@ public class CompactionCoordinatorService {
     }
   }
 
-  @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-  public static class recordCompletion_args implements 
org.apache.thrift.TBase<recordCompletion_args, recordCompletion_args._Fields>, 
java.io.Serializable, Cloneable, Comparable<recordCompletion_args>   {
-    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("recordCompletion_args");
-
-    private static final org.apache.thrift.protocol.TField TINFO_FIELD_DESC = 
new org.apache.thrift.protocol.TField("tinfo", 
org.apache.thrift.protocol.TType.STRUCT, (short)1);
-    private static final org.apache.thrift.protocol.TField 
CREDENTIALS_FIELD_DESC = new org.apache.thrift.protocol.TField("credentials", 
org.apache.thrift.protocol.TType.STRUCT, (short)2);
-    private static final org.apache.thrift.protocol.TField 
EXTERNAL_COMPACTION_ID_FIELD_DESC = new 
org.apache.thrift.protocol.TField("externalCompactionId", 
org.apache.thrift.protocol.TType.STRING, (short)3);
-
-    private static final org.apache.thrift.scheme.SchemeFactory 
STANDARD_SCHEME_FACTORY = new recordCompletion_argsStandardSchemeFactory();
-    private static final org.apache.thrift.scheme.SchemeFactory 
TUPLE_SCHEME_FACTORY = new recordCompletion_argsTupleSchemeFactory();
-
-    public @org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo; // required
-    public @org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials; // 
required
-    public @org.apache.thrift.annotation.Nullable java.lang.String 
externalCompactionId; // required
-
-    /** The set of fields this struct contains, along with convenience methods 
for finding and manipulating them. */
-    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-      TINFO((short)1, "tinfo"),
-      CREDENTIALS((short)2, "credentials"),
-      EXTERNAL_COMPACTION_ID((short)3, "externalCompactionId");
-
-      private static final java.util.Map<java.lang.String, _Fields> byName = 
new java.util.HashMap<java.lang.String, _Fields>();
-
-      static {
-        for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
-          byName.put(field.getFieldName(), field);
-        }
-      }
-
-      /**
-       * Find the _Fields constant that matches fieldId, or null if its not 
found.
-       */
-      @org.apache.thrift.annotation.Nullable
-      public static _Fields findByThriftId(int fieldId) {
-        switch(fieldId) {
-          case 1: // TINFO
-            return TINFO;
-          case 2: // CREDENTIALS
-            return CREDENTIALS;
-          case 3: // EXTERNAL_COMPACTION_ID
-            return EXTERNAL_COMPACTION_ID;
-          default:
-            return null;
-        }
-      }
-
-      /**
-       * Find the _Fields constant that matches fieldId, throwing an exception
-       * if it is not found.
-       */
-      public static _Fields findByThriftIdOrThrow(int fieldId) {
-        _Fields fields = findByThriftId(fieldId);
-        if (fields == null) throw new 
java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
-        return fields;
-      }
-
-      /**
-       * Find the _Fields constant that matches name, or null if its not found.
-       */
-      @org.apache.thrift.annotation.Nullable
-      public static _Fields findByName(java.lang.String name) {
-        return byName.get(name);
-      }
-
-      private final short _thriftId;
-      private final java.lang.String _fieldName;
-
-      _Fields(short thriftId, java.lang.String fieldName) {
-        _thriftId = thriftId;
-        _fieldName = fieldName;
-      }
-
-      @Override
-      public short getThriftFieldId() {
-        return _thriftId;
-      }
-
-      @Override
-      public java.lang.String getFieldName() {
-        return _fieldName;
-      }
-    }
-
-    // isset id assignments
-    public static final java.util.Map<_Fields, 
org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-    static {
-      java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap 
= new java.util.EnumMap<_Fields, 
org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-      tmpMap.put(_Fields.TINFO, new 
org.apache.thrift.meta_data.FieldMetaData("tinfo", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new 
org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT,
 org.apache.accumulo.core.clientImpl.thrift.TInfo.class)));
-      tmpMap.put(_Fields.CREDENTIALS, new 
org.apache.thrift.meta_data.FieldMetaData("credentials", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new 
org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT,
 org.apache.accumulo.core.securityImpl.thrift.TCredentials.class)));
-      tmpMap.put(_Fields.EXTERNAL_COMPACTION_ID, new 
org.apache.thrift.meta_data.FieldMetaData("externalCompactionId", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
-          new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
-      metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-      
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(recordCompletion_args.class,
 metaDataMap);
-    }
-
-    public recordCompletion_args() {
-    }
-
-    public recordCompletion_args(
-      org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo,
-      org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials,
-      java.lang.String externalCompactionId)
-    {
-      this();
-      this.tinfo = tinfo;
-      this.credentials = credentials;
-      this.externalCompactionId = externalCompactionId;
-    }
-
-    /**
-     * Performs a deep copy on <i>other</i>.
-     */
-    public recordCompletion_args(recordCompletion_args other) {
-      if (other.isSetTinfo()) {
-        this.tinfo = new 
org.apache.accumulo.core.clientImpl.thrift.TInfo(other.tinfo);
-      }
-      if (other.isSetCredentials()) {
-        this.credentials = new 
org.apache.accumulo.core.securityImpl.thrift.TCredentials(other.credentials);
-      }
-      if (other.isSetExternalCompactionId()) {
-        this.externalCompactionId = other.externalCompactionId;
-      }
-    }
-
-    @Override
-    public recordCompletion_args deepCopy() {
-      return new recordCompletion_args(this);
-    }
-
-    @Override
-    public void clear() {
-      this.tinfo = null;
-      this.credentials = null;
-      this.externalCompactionId = null;
-    }
-
-    @org.apache.thrift.annotation.Nullable
-    public org.apache.accumulo.core.clientImpl.thrift.TInfo getTinfo() {
-      return this.tinfo;
-    }
-
-    public recordCompletion_args 
setTinfo(@org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.clientImpl.thrift.TInfo tinfo) {
-      this.tinfo = tinfo;
-      return this;
-    }
-
-    public void unsetTinfo() {
-      this.tinfo = null;
-    }
-
-    /** Returns true if field tinfo is set (has been assigned a value) and 
false otherwise */
-    public boolean isSetTinfo() {
-      return this.tinfo != null;
-    }
-
-    public void setTinfoIsSet(boolean value) {
-      if (!value) {
-        this.tinfo = null;
-      }
-    }
-
-    @org.apache.thrift.annotation.Nullable
-    public org.apache.accumulo.core.securityImpl.thrift.TCredentials 
getCredentials() {
-      return this.credentials;
-    }
-
-    public recordCompletion_args 
setCredentials(@org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.securityImpl.thrift.TCredentials credentials) {
-      this.credentials = credentials;
-      return this;
-    }
-
-    public void unsetCredentials() {
-      this.credentials = null;
-    }
-
-    /** Returns true if field credentials is set (has been assigned a value) 
and false otherwise */
-    public boolean isSetCredentials() {
-      return this.credentials != null;
-    }
-
-    public void setCredentialsIsSet(boolean value) {
-      if (!value) {
-        this.credentials = null;
-      }
-    }
-
-    @org.apache.thrift.annotation.Nullable
-    public java.lang.String getExternalCompactionId() {
-      return this.externalCompactionId;
-    }
-
-    public recordCompletion_args 
setExternalCompactionId(@org.apache.thrift.annotation.Nullable java.lang.String 
externalCompactionId) {
-      this.externalCompactionId = externalCompactionId;
-      return this;
-    }
-
-    public void unsetExternalCompactionId() {
-      this.externalCompactionId = null;
-    }
-
-    /** Returns true if field externalCompactionId is set (has been assigned a 
value) and false otherwise */
-    public boolean isSetExternalCompactionId() {
-      return this.externalCompactionId != null;
-    }
-
-    public void setExternalCompactionIdIsSet(boolean value) {
-      if (!value) {
-        this.externalCompactionId = null;
-      }
-    }
-
-    @Override
-    public void setFieldValue(_Fields field, 
@org.apache.thrift.annotation.Nullable java.lang.Object value) {
-      switch (field) {
-      case TINFO:
-        if (value == null) {
-          unsetTinfo();
-        } else {
-          setTinfo((org.apache.accumulo.core.clientImpl.thrift.TInfo)value);
-        }
-        break;
-
-      case CREDENTIALS:
-        if (value == null) {
-          unsetCredentials();
-        } else {
-          
setCredentials((org.apache.accumulo.core.securityImpl.thrift.TCredentials)value);
-        }
-        break;
-
-      case EXTERNAL_COMPACTION_ID:
-        if (value == null) {
-          unsetExternalCompactionId();
-        } else {
-          setExternalCompactionId((java.lang.String)value);
-        }
-        break;
-
-      }
-    }
-
-    @org.apache.thrift.annotation.Nullable
-    @Override
-    public java.lang.Object getFieldValue(_Fields field) {
-      switch (field) {
-      case TINFO:
-        return getTinfo();
-
-      case CREDENTIALS:
-        return getCredentials();
-
-      case EXTERNAL_COMPACTION_ID:
-        return getExternalCompactionId();
-
-      }
-      throw new java.lang.IllegalStateException();
-    }
-
-    /** Returns true if field corresponding to fieldID is set (has been 
assigned a value) and false otherwise */
-    @Override
-    public boolean isSet(_Fields field) {
-      if (field == null) {
-        throw new java.lang.IllegalArgumentException();
-      }
-
-      switch (field) {
-      case TINFO:
-        return isSetTinfo();
-      case CREDENTIALS:
-        return isSetCredentials();
-      case EXTERNAL_COMPACTION_ID:
-        return isSetExternalCompactionId();
-      }
-      throw new java.lang.IllegalStateException();
-    }
-
-    @Override
-    public boolean equals(java.lang.Object that) {
-      if (that instanceof recordCompletion_args)
-        return this.equals((recordCompletion_args)that);
-      return false;
-    }
-
-    public boolean equals(recordCompletion_args that) {
-      if (that == null)
-        return false;
-      if (this == that)
-        return true;
-
-      boolean this_present_tinfo = true && this.isSetTinfo();
-      boolean that_present_tinfo = true && that.isSetTinfo();
-      if (this_present_tinfo || that_present_tinfo) {
-        if (!(this_present_tinfo && that_present_tinfo))
-          return false;
-        if (!this.tinfo.equals(that.tinfo))
-          return false;
-      }
-
-      boolean this_present_credentials = true && this.isSetCredentials();
-      boolean that_present_credentials = true && that.isSetCredentials();
-      if (this_present_credentials || that_present_credentials) {
-        if (!(this_present_credentials && that_present_credentials))
-          return false;
-        if (!this.credentials.equals(that.credentials))
-          return false;
-      }
-
-      boolean this_present_externalCompactionId = true && 
this.isSetExternalCompactionId();
-      boolean that_present_externalCompactionId = true && 
that.isSetExternalCompactionId();
-      if (this_present_externalCompactionId || 
that_present_externalCompactionId) {
-        if (!(this_present_externalCompactionId && 
that_present_externalCompactionId))
-          return false;
-        if (!this.externalCompactionId.equals(that.externalCompactionId))
-          return false;
-      }
-
-      return true;
-    }
-
-    @Override
-    public int hashCode() {
-      int hashCode = 1;
-
-      hashCode = hashCode * 8191 + ((isSetTinfo()) ? 131071 : 524287);
-      if (isSetTinfo())
-        hashCode = hashCode * 8191 + tinfo.hashCode();
-
-      hashCode = hashCode * 8191 + ((isSetCredentials()) ? 131071 : 524287);
-      if (isSetCredentials())
-        hashCode = hashCode * 8191 + credentials.hashCode();
-
-      hashCode = hashCode * 8191 + ((isSetExternalCompactionId()) ? 131071 : 
524287);
-      if (isSetExternalCompactionId())
-        hashCode = hashCode * 8191 + externalCompactionId.hashCode();
-
-      return hashCode;
-    }
-
-    @Override
-    public int compareTo(recordCompletion_args other) {
-      if (!getClass().equals(other.getClass())) {
-        return getClass().getName().compareTo(other.getClass().getName());
-      }
-
-      int lastComparison = 0;
-
-      lastComparison = java.lang.Boolean.compare(isSetTinfo(), 
other.isSetTinfo());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetTinfo()) {
-        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tinfo, 
other.tinfo);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
-      lastComparison = java.lang.Boolean.compare(isSetCredentials(), 
other.isSetCredentials());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetCredentials()) {
-        lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.credentials, other.credentials);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
-      lastComparison = java.lang.Boolean.compare(isSetExternalCompactionId(), 
other.isSetExternalCompactionId());
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-      if (isSetExternalCompactionId()) {
-        lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.externalCompactionId, 
other.externalCompactionId);
-        if (lastComparison != 0) {
-          return lastComparison;
-        }
-      }
-      return 0;
-    }
-
-    @org.apache.thrift.annotation.Nullable
-    @Override
-    public _Fields fieldForId(int fieldId) {
-      return _Fields.findByThriftId(fieldId);
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol iprot) throws 
org.apache.thrift.TException {
-      scheme(iprot).read(iprot, this);
-    }
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol oprot) throws 
org.apache.thrift.TException {
-      scheme(oprot).write(oprot, this);
-    }
-
-    @Override
-    public java.lang.String toString() {
-      java.lang.StringBuilder sb = new 
java.lang.StringBuilder("recordCompletion_args(");
-      boolean first = true;
-
-      sb.append("tinfo:");
-      if (this.tinfo == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.tinfo);
-      }
-      first = false;
-      if (!first) sb.append(", ");
-      sb.append("credentials:");
-      if (this.credentials == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.credentials);
-      }
-      first = false;
-      if (!first) sb.append(", ");
-      sb.append("externalCompactionId:");
-      if (this.externalCompactionId == null) {
-        sb.append("null");
-      } else {
-        sb.append(this.externalCompactionId);
-      }
-      first = false;
-      sb.append(")");
-      return sb.toString();
-    }
-
-    public void validate() throws org.apache.thrift.TException {
-      // check for required fields
-      // check for sub-struct validity
-      if (tinfo != null) {
-        tinfo.validate();
-      }
-      if (credentials != null) {
-        credentials.validate();
-      }
-    }
-
-    private void writeObject(java.io.ObjectOutputStream out) throws 
java.io.IOException {
-      try {
-        write(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(out)));
-      } catch (org.apache.thrift.TException te) {
-        throw new java.io.IOException(te);
-      }
-    }
-
-    private void readObject(java.io.ObjectInputStream in) throws 
java.io.IOException, java.lang.ClassNotFoundException {
-      try {
-        read(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(in)));
-      } catch (org.apache.thrift.TException te) {
-        throw new java.io.IOException(te);
-      }
-    }
-
-    private static class recordCompletion_argsStandardSchemeFactory implements 
org.apache.thrift.scheme.SchemeFactory {
-      @Override
-      public recordCompletion_argsStandardScheme getScheme() {
-        return new recordCompletion_argsStandardScheme();
-      }
-    }
-
-    private static class recordCompletion_argsStandardScheme extends 
org.apache.thrift.scheme.StandardScheme<recordCompletion_args> {
-
-      @Override
-      public void read(org.apache.thrift.protocol.TProtocol iprot, 
recordCompletion_args struct) throws org.apache.thrift.TException {
-        org.apache.thrift.protocol.TField schemeField;
-        iprot.readStructBegin();
-        while (true)
-        {
-          schemeField = iprot.readFieldBegin();
-          if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
-            break;
-          }
-          switch (schemeField.id) {
-            case 1: // TINFO
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) 
{
-                struct.tinfo = new 
org.apache.accumulo.core.clientImpl.thrift.TInfo();
-                struct.tinfo.read(iprot);
-                struct.setTinfoIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
-              }
-              break;
-            case 2: // CREDENTIALS
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) 
{
-                struct.credentials = new 
org.apache.accumulo.core.securityImpl.thrift.TCredentials();
-                struct.credentials.read(iprot);
-                struct.setCredentialsIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
-              }
-              break;
-            case 3: // EXTERNAL_COMPACTION_ID
-              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) 
{
-                struct.externalCompactionId = iprot.readString();
-                struct.setExternalCompactionIdIsSet(true);
-              } else { 
-                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
-              }
-              break;
-            default:
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
-          }
-          iprot.readFieldEnd();
-        }
-        iprot.readStructEnd();
-
-        // check for required fields of primitive type, which can't be checked 
in the validate method
-        struct.validate();
-      }
-
-      @Override
-      public void write(org.apache.thrift.protocol.TProtocol oprot, 
recordCompletion_args struct) throws org.apache.thrift.TException {
-        struct.validate();
-
-        oprot.writeStructBegin(STRUCT_DESC);
-        if (struct.tinfo != null) {
-          oprot.writeFieldBegin(TINFO_FIELD_DESC);
-          struct.tinfo.write(oprot);
-          oprot.writeFieldEnd();
-        }
-        if (struct.credentials != null) {
-          oprot.writeFieldBegin(CREDENTIALS_FIELD_DESC);
-          struct.credentials.write(oprot);
-          oprot.writeFieldEnd();
-        }
-        if (struct.externalCompactionId != null) {
-          oprot.writeFieldBegin(EXTERNAL_COMPACTION_ID_FIELD_DESC);
-          oprot.writeString(struct.externalCompactionId);
-          oprot.writeFieldEnd();
-        }
-        oprot.writeFieldStop();
-        oprot.writeStructEnd();
-      }
-
-    }
-
-    private static class recordCompletion_argsTupleSchemeFactory implements 
org.apache.thrift.scheme.SchemeFactory {
-      @Override
-      public recordCompletion_argsTupleScheme getScheme() {
-        return new recordCompletion_argsTupleScheme();
-      }
-    }
-
-    private static class recordCompletion_argsTupleScheme extends 
org.apache.thrift.scheme.TupleScheme<recordCompletion_args> {
-
-      @Override
-      public void write(org.apache.thrift.protocol.TProtocol prot, 
recordCompletion_args struct) throws org.apache.thrift.TException {
-        org.apache.thrift.protocol.TTupleProtocol oprot = 
(org.apache.thrift.protocol.TTupleProtocol) prot;
-        java.util.BitSet optionals = new java.util.BitSet();
-        if (struct.isSetTinfo()) {
-          optionals.set(0);
-        }
-        if (struct.isSetCredentials()) {
-          optionals.set(1);
-        }
-        if (struct.isSetExternalCompactionId()) {
-          optionals.set(2);
-        }
-        oprot.writeBitSet(optionals, 3);
-        if (struct.isSetTinfo()) {
-          struct.tinfo.write(oprot);
-        }
-        if (struct.isSetCredentials()) {
-          struct.credentials.write(oprot);
-        }
-        if (struct.isSetExternalCompactionId()) {
-          oprot.writeString(struct.externalCompactionId);
-        }
-      }
-
-      @Override
-      public void read(org.apache.thrift.protocol.TProtocol prot, 
recordCompletion_args struct) throws org.apache.thrift.TException {
-        org.apache.thrift.protocol.TTupleProtocol iprot = 
(org.apache.thrift.protocol.TTupleProtocol) prot;
-        java.util.BitSet incoming = iprot.readBitSet(3);
-        if (incoming.get(0)) {
-          struct.tinfo = new 
org.apache.accumulo.core.clientImpl.thrift.TInfo();
-          struct.tinfo.read(iprot);
-          struct.setTinfoIsSet(true);
-        }
-        if (incoming.get(1)) {
-          struct.credentials = new 
org.apache.accumulo.core.securityImpl.thrift.TCredentials();
-          struct.credentials.read(iprot);
-          struct.setCredentialsIsSet(true);
-        }
-        if (incoming.get(2)) {
-          struct.externalCompactionId = iprot.readString();
-          struct.setExternalCompactionIdIsSet(true);
-        }
-      }
-    }
-
-    private static <S extends org.apache.thrift.scheme.IScheme> S 
scheme(org.apache.thrift.protocol.TProtocol proto) {
-      return 
(org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? 
STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
-    }
-  }
-
   private static void unusedMethod() {}
 }
diff --git 
a/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactorService.java
 
b/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactorService.java
index d9d867d8d2..c59d19d98f 100644
--- 
a/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactorService.java
+++ 
b/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/CompactorService.java
@@ -3668,14 +3668,14 @@ public class CompactorService {
             case 0: // SUCCESS
               if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
                 {
-                  org.apache.thrift.protocol.TList _list28 = 
iprot.readListBegin();
-                  struct.success = new 
java.util.ArrayList<org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction>(_list28.size);
-                  @org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction _elem29;
-                  for (int _i30 = 0; _i30 < _list28.size; ++_i30)
+                  org.apache.thrift.protocol.TList _list18 = 
iprot.readListBegin();
+                  struct.success = new 
java.util.ArrayList<org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction>(_list18.size);
+                  @org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction _elem19;
+                  for (int _i20 = 0; _i20 < _list18.size; ++_i20)
                   {
-                    _elem29 = new 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction();
-                    _elem29.read(iprot);
-                    struct.success.add(_elem29);
+                    _elem19 = new 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction();
+                    _elem19.read(iprot);
+                    struct.success.add(_elem19);
                   }
                   iprot.readListEnd();
                 }
@@ -3713,9 +3713,9 @@ public class CompactorService {
           oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
           {
             oprot.writeListBegin(new 
org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, 
struct.success.size()));
-            for (org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction 
_iter31 : struct.success)
+            for (org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction 
_iter21 : struct.success)
             {
-              _iter31.write(oprot);
+              _iter21.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -3755,9 +3755,9 @@ public class CompactorService {
         if (struct.isSetSuccess()) {
           {
             oprot.writeI32(struct.success.size());
-            for (org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction 
_iter32 : struct.success)
+            for (org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction 
_iter22 : struct.success)
             {
-              _iter32.write(oprot);
+              _iter22.write(oprot);
             }
           }
         }
@@ -3772,14 +3772,14 @@ public class CompactorService {
         java.util.BitSet incoming = iprot.readBitSet(2);
         if (incoming.get(0)) {
           {
-            org.apache.thrift.protocol.TList _list33 = 
iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
-            struct.success = new 
java.util.ArrayList<org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction>(_list33.size);
-            @org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction _elem34;
-            for (int _i35 = 0; _i35 < _list33.size; ++_i35)
+            org.apache.thrift.protocol.TList _list23 = 
iprot.readListBegin(org.apache.thrift.protocol.TType.STRUCT);
+            struct.success = new 
java.util.ArrayList<org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction>(_list23.size);
+            @org.apache.thrift.annotation.Nullable 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction _elem24;
+            for (int _i25 = 0; _i25 < _list23.size; ++_i25)
             {
-              _elem34 = new 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction();
-              _elem34.read(iprot);
-              struct.success.add(_elem34);
+              _elem24 = new 
org.apache.accumulo.core.tabletserver.thrift.ActiveCompaction();
+              _elem24.read(iprot);
+              struct.success.add(_elem24);
             }
           }
           struct.setSuccessIsSet(true);
diff --git 
a/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/TExternalCompactionMap.java
 
b/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/TExternalCompactionMap.java
deleted file mode 100644
index a5b3d74a2b..0000000000
--- 
a/core/src/main/thrift-gen-java/org/apache/accumulo/core/compaction/thrift/TExternalCompactionMap.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- * 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.
- */
-/*
- * Autogenerated by Thrift Compiler (0.17.0)
- *
- * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
- *  @generated
- */
-package org.apache.accumulo.core.compaction.thrift;
-
-@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
-public class TExternalCompactionMap implements 
org.apache.thrift.TBase<TExternalCompactionMap, 
TExternalCompactionMap._Fields>, java.io.Serializable, Cloneable, 
Comparable<TExternalCompactionMap> {
-  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct("TExternalCompactionMap");
-
-  private static final org.apache.thrift.protocol.TField 
COMPACTIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("compactions", 
org.apache.thrift.protocol.TType.MAP, (short)1);
-
-  private static final org.apache.thrift.scheme.SchemeFactory 
STANDARD_SCHEME_FACTORY = new TExternalCompactionMapStandardSchemeFactory();
-  private static final org.apache.thrift.scheme.SchemeFactory 
TUPLE_SCHEME_FACTORY = new TExternalCompactionMapTupleSchemeFactory();
-
-  public @org.apache.thrift.annotation.Nullable 
java.util.Map<java.lang.String,TExternalCompaction> compactions; // required
-
-  /** The set of fields this struct contains, along with convenience methods 
for finding and manipulating them. */
-  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
-    COMPACTIONS((short)1, "compactions");
-
-    private static final java.util.Map<java.lang.String, _Fields> byName = new 
java.util.HashMap<java.lang.String, _Fields>();
-
-    static {
-      for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
-        byName.put(field.getFieldName(), field);
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, or null if its not 
found.
-     */
-    @org.apache.thrift.annotation.Nullable
-    public static _Fields findByThriftId(int fieldId) {
-      switch(fieldId) {
-        case 1: // COMPACTIONS
-          return COMPACTIONS;
-        default:
-          return null;
-      }
-    }
-
-    /**
-     * Find the _Fields constant that matches fieldId, throwing an exception
-     * if it is not found.
-     */
-    public static _Fields findByThriftIdOrThrow(int fieldId) {
-      _Fields fields = findByThriftId(fieldId);
-      if (fields == null) throw new java.lang.IllegalArgumentException("Field 
" + fieldId + " doesn't exist!");
-      return fields;
-    }
-
-    /**
-     * Find the _Fields constant that matches name, or null if its not found.
-     */
-    @org.apache.thrift.annotation.Nullable
-    public static _Fields findByName(java.lang.String name) {
-      return byName.get(name);
-    }
-
-    private final short _thriftId;
-    private final java.lang.String _fieldName;
-
-    _Fields(short thriftId, java.lang.String fieldName) {
-      _thriftId = thriftId;
-      _fieldName = fieldName;
-    }
-
-    @Override
-    public short getThriftFieldId() {
-      return _thriftId;
-    }
-
-    @Override
-    public java.lang.String getFieldName() {
-      return _fieldName;
-    }
-  }
-
-  // isset id assignments
-  public static final java.util.Map<_Fields, 
org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
-  static {
-    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = 
new java.util.EnumMap<_Fields, 
org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
-    tmpMap.put(_Fields.COMPACTIONS, new 
org.apache.thrift.meta_data.FieldMetaData("compactions", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
-        new 
org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
-            new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING),
 
-            new 
org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT,
 TExternalCompaction.class))));
-    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
-    
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TExternalCompactionMap.class,
 metaDataMap);
-  }
-
-  public TExternalCompactionMap() {
-  }
-
-  public TExternalCompactionMap(
-    java.util.Map<java.lang.String,TExternalCompaction> compactions)
-  {
-    this();
-    this.compactions = compactions;
-  }
-
-  /**
-   * Performs a deep copy on <i>other</i>.
-   */
-  public TExternalCompactionMap(TExternalCompactionMap other) {
-    if (other.isSetCompactions()) {
-      java.util.Map<java.lang.String,TExternalCompaction> __this__compactions 
= new 
java.util.HashMap<java.lang.String,TExternalCompaction>(other.compactions.size());
-      for (java.util.Map.Entry<java.lang.String, TExternalCompaction> 
other_element : other.compactions.entrySet()) {
-
-        java.lang.String other_element_key = other_element.getKey();
-        TExternalCompaction other_element_value = other_element.getValue();
-
-        java.lang.String __this__compactions_copy_key = other_element_key;
-
-        TExternalCompaction __this__compactions_copy_value = new 
TExternalCompaction(other_element_value);
-
-        __this__compactions.put(__this__compactions_copy_key, 
__this__compactions_copy_value);
-      }
-      this.compactions = __this__compactions;
-    }
-  }
-
-  @Override
-  public TExternalCompactionMap deepCopy() {
-    return new TExternalCompactionMap(this);
-  }
-
-  @Override
-  public void clear() {
-    this.compactions = null;
-  }
-
-  public int getCompactionsSize() {
-    return (this.compactions == null) ? 0 : this.compactions.size();
-  }
-
-  public void putToCompactions(java.lang.String key, TExternalCompaction val) {
-    if (this.compactions == null) {
-      this.compactions = new 
java.util.HashMap<java.lang.String,TExternalCompaction>();
-    }
-    this.compactions.put(key, val);
-  }
-
-  @org.apache.thrift.annotation.Nullable
-  public java.util.Map<java.lang.String,TExternalCompaction> getCompactions() {
-    return this.compactions;
-  }
-
-  public TExternalCompactionMap 
setCompactions(@org.apache.thrift.annotation.Nullable 
java.util.Map<java.lang.String,TExternalCompaction> compactions) {
-    this.compactions = compactions;
-    return this;
-  }
-
-  public void unsetCompactions() {
-    this.compactions = null;
-  }
-
-  /** Returns true if field compactions is set (has been assigned a value) and 
false otherwise */
-  public boolean isSetCompactions() {
-    return this.compactions != null;
-  }
-
-  public void setCompactionsIsSet(boolean value) {
-    if (!value) {
-      this.compactions = null;
-    }
-  }
-
-  @Override
-  public void setFieldValue(_Fields field, 
@org.apache.thrift.annotation.Nullable java.lang.Object value) {
-    switch (field) {
-    case COMPACTIONS:
-      if (value == null) {
-        unsetCompactions();
-      } else {
-        
setCompactions((java.util.Map<java.lang.String,TExternalCompaction>)value);
-      }
-      break;
-
-    }
-  }
-
-  @org.apache.thrift.annotation.Nullable
-  @Override
-  public java.lang.Object getFieldValue(_Fields field) {
-    switch (field) {
-    case COMPACTIONS:
-      return getCompactions();
-
-    }
-    throw new java.lang.IllegalStateException();
-  }
-
-  /** Returns true if field corresponding to fieldID is set (has been assigned 
a value) and false otherwise */
-  @Override
-  public boolean isSet(_Fields field) {
-    if (field == null) {
-      throw new java.lang.IllegalArgumentException();
-    }
-
-    switch (field) {
-    case COMPACTIONS:
-      return isSetCompactions();
-    }
-    throw new java.lang.IllegalStateException();
-  }
-
-  @Override
-  public boolean equals(java.lang.Object that) {
-    if (that instanceof TExternalCompactionMap)
-      return this.equals((TExternalCompactionMap)that);
-    return false;
-  }
-
-  public boolean equals(TExternalCompactionMap that) {
-    if (that == null)
-      return false;
-    if (this == that)
-      return true;
-
-    boolean this_present_compactions = true && this.isSetCompactions();
-    boolean that_present_compactions = true && that.isSetCompactions();
-    if (this_present_compactions || that_present_compactions) {
-      if (!(this_present_compactions && that_present_compactions))
-        return false;
-      if (!this.compactions.equals(that.compactions))
-        return false;
-    }
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int hashCode = 1;
-
-    hashCode = hashCode * 8191 + ((isSetCompactions()) ? 131071 : 524287);
-    if (isSetCompactions())
-      hashCode = hashCode * 8191 + compactions.hashCode();
-
-    return hashCode;
-  }
-
-  @Override
-  public int compareTo(TExternalCompactionMap other) {
-    if (!getClass().equals(other.getClass())) {
-      return getClass().getName().compareTo(other.getClass().getName());
-    }
-
-    int lastComparison = 0;
-
-    lastComparison = java.lang.Boolean.compare(isSetCompactions(), 
other.isSetCompactions());
-    if (lastComparison != 0) {
-      return lastComparison;
-    }
-    if (isSetCompactions()) {
-      lastComparison = 
org.apache.thrift.TBaseHelper.compareTo(this.compactions, other.compactions);
-      if (lastComparison != 0) {
-        return lastComparison;
-      }
-    }
-    return 0;
-  }
-
-  @org.apache.thrift.annotation.Nullable
-  @Override
-  public _Fields fieldForId(int fieldId) {
-    return _Fields.findByThriftId(fieldId);
-  }
-
-  @Override
-  public void read(org.apache.thrift.protocol.TProtocol iprot) throws 
org.apache.thrift.TException {
-    scheme(iprot).read(iprot, this);
-  }
-
-  @Override
-  public void write(org.apache.thrift.protocol.TProtocol oprot) throws 
org.apache.thrift.TException {
-    scheme(oprot).write(oprot, this);
-  }
-
-  @Override
-  public java.lang.String toString() {
-    java.lang.StringBuilder sb = new 
java.lang.StringBuilder("TExternalCompactionMap(");
-    boolean first = true;
-
-    sb.append("compactions:");
-    if (this.compactions == null) {
-      sb.append("null");
-    } else {
-      sb.append(this.compactions);
-    }
-    first = false;
-    sb.append(")");
-    return sb.toString();
-  }
-
-  public void validate() throws org.apache.thrift.TException {
-    // check for required fields
-    // check for sub-struct validity
-  }
-
-  private void writeObject(java.io.ObjectOutputStream out) throws 
java.io.IOException {
-    try {
-      write(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(out)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private void readObject(java.io.ObjectInputStream in) throws 
java.io.IOException, java.lang.ClassNotFoundException {
-    try {
-      read(new org.apache.thrift.protocol.TCompactProtocol(new 
org.apache.thrift.transport.TIOStreamTransport(in)));
-    } catch (org.apache.thrift.TException te) {
-      throw new java.io.IOException(te);
-    }
-  }
-
-  private static class TExternalCompactionMapStandardSchemeFactory implements 
org.apache.thrift.scheme.SchemeFactory {
-    @Override
-    public TExternalCompactionMapStandardScheme getScheme() {
-      return new TExternalCompactionMapStandardScheme();
-    }
-  }
-
-  private static class TExternalCompactionMapStandardScheme extends 
org.apache.thrift.scheme.StandardScheme<TExternalCompactionMap> {
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol iprot, 
TExternalCompactionMap struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TField schemeField;
-      iprot.readStructBegin();
-      while (true)
-      {
-        schemeField = iprot.readFieldBegin();
-        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
-          break;
-        }
-        switch (schemeField.id) {
-          case 1: // COMPACTIONS
-            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
-              {
-                org.apache.thrift.protocol.TMap _map18 = iprot.readMapBegin();
-                struct.compactions = new 
java.util.HashMap<java.lang.String,TExternalCompaction>(2*_map18.size);
-                @org.apache.thrift.annotation.Nullable java.lang.String _key19;
-                @org.apache.thrift.annotation.Nullable TExternalCompaction 
_val20;
-                for (int _i21 = 0; _i21 < _map18.size; ++_i21)
-                {
-                  _key19 = iprot.readString();
-                  _val20 = new TExternalCompaction();
-                  _val20.read(iprot);
-                  struct.compactions.put(_key19, _val20);
-                }
-                iprot.readMapEnd();
-              }
-              struct.setCompactionsIsSet(true);
-            } else { 
-              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
-            }
-            break;
-          default:
-            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, 
schemeField.type);
-        }
-        iprot.readFieldEnd();
-      }
-      iprot.readStructEnd();
-
-      // check for required fields of primitive type, which can't be checked 
in the validate method
-      struct.validate();
-    }
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol oprot, 
TExternalCompactionMap struct) throws org.apache.thrift.TException {
-      struct.validate();
-
-      oprot.writeStructBegin(STRUCT_DESC);
-      if (struct.compactions != null) {
-        oprot.writeFieldBegin(COMPACTIONS_FIELD_DESC);
-        {
-          oprot.writeMapBegin(new 
org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.STRUCT, struct.compactions.size()));
-          for (java.util.Map.Entry<java.lang.String, TExternalCompaction> 
_iter22 : struct.compactions.entrySet())
-          {
-            oprot.writeString(_iter22.getKey());
-            _iter22.getValue().write(oprot);
-          }
-          oprot.writeMapEnd();
-        }
-        oprot.writeFieldEnd();
-      }
-      oprot.writeFieldStop();
-      oprot.writeStructEnd();
-    }
-
-  }
-
-  private static class TExternalCompactionMapTupleSchemeFactory implements 
org.apache.thrift.scheme.SchemeFactory {
-    @Override
-    public TExternalCompactionMapTupleScheme getScheme() {
-      return new TExternalCompactionMapTupleScheme();
-    }
-  }
-
-  private static class TExternalCompactionMapTupleScheme extends 
org.apache.thrift.scheme.TupleScheme<TExternalCompactionMap> {
-
-    @Override
-    public void write(org.apache.thrift.protocol.TProtocol prot, 
TExternalCompactionMap struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TTupleProtocol oprot = 
(org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet optionals = new java.util.BitSet();
-      if (struct.isSetCompactions()) {
-        optionals.set(0);
-      }
-      oprot.writeBitSet(optionals, 1);
-      if (struct.isSetCompactions()) {
-        {
-          oprot.writeI32(struct.compactions.size());
-          for (java.util.Map.Entry<java.lang.String, TExternalCompaction> 
_iter23 : struct.compactions.entrySet())
-          {
-            oprot.writeString(_iter23.getKey());
-            _iter23.getValue().write(oprot);
-          }
-        }
-      }
-    }
-
-    @Override
-    public void read(org.apache.thrift.protocol.TProtocol prot, 
TExternalCompactionMap struct) throws org.apache.thrift.TException {
-      org.apache.thrift.protocol.TTupleProtocol iprot = 
(org.apache.thrift.protocol.TTupleProtocol) prot;
-      java.util.BitSet incoming = iprot.readBitSet(1);
-      if (incoming.get(0)) {
-        {
-          org.apache.thrift.protocol.TMap _map24 = 
iprot.readMapBegin(org.apache.thrift.protocol.TType.STRING, 
org.apache.thrift.protocol.TType.STRUCT); 
-          struct.compactions = new 
java.util.HashMap<java.lang.String,TExternalCompaction>(2*_map24.size);
-          @org.apache.thrift.annotation.Nullable java.lang.String _key25;
-          @org.apache.thrift.annotation.Nullable TExternalCompaction _val26;
-          for (int _i27 = 0; _i27 < _map24.size; ++_i27)
-          {
-            _key25 = iprot.readString();
-            _val26 = new TExternalCompaction();
-            _val26.read(iprot);
-            struct.compactions.put(_key25, _val26);
-          }
-        }
-        struct.setCompactionsIsSet(true);
-      }
-    }
-  }
-
-  private static <S extends org.apache.thrift.scheme.IScheme> S 
scheme(org.apache.thrift.protocol.TProtocol proto) {
-    return 
(org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? 
STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
-  }
-  private static void unusedMethod() {}
-}
-
diff --git a/core/src/main/thrift/compaction-coordinator.thrift 
b/core/src/main/thrift/compaction-coordinator.thrift
index 29e4dde868..8effd88aff 100644
--- a/core/src/main/thrift/compaction-coordinator.thrift
+++ b/core/src/main/thrift/compaction-coordinator.thrift
@@ -60,10 +60,6 @@ struct TExternalCompactionList {
   1:list<TExternalCompaction> compactions
 }
 
-struct TExternalCompactionMap {
-  1:map<string,TExternalCompaction> compactions
-}
-
 struct TNextCompactionJob {
   1:tabletserver.TExternalCompactionJob job
   // The total number of compactors servicing the queue this job was requested 
for
@@ -135,13 +131,6 @@ service CompactionCoordinatorService {
      1:client.ThriftSecurityException sec
      2:client.ThriftNotActiveServiceException tnase
   )
-
-
-  oneway void recordCompletion(
-    1:client.TInfo tinfo
-    2:security.TCredentials credentials
-    3:string externalCompactionId
-  )
 }
 
 service CompactorService {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/compaction/CompactionPluginUtils.java
 
b/server/base/src/main/java/org/apache/accumulo/server/compaction/CompactionPluginUtils.java
index 854f096ebd..514a110f2a 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/compaction/CompactionPluginUtils.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/compaction/CompactionPluginUtils.java
@@ -24,6 +24,7 @@ import java.net.URI;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
@@ -46,6 +47,7 @@ import 
org.apache.accumulo.core.clientImpl.UserCompactionUtils;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.ConfigurationTypeHelper;
 import org.apache.accumulo.core.conf.Property;
+import org.apache.accumulo.core.data.AbstractId;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.RowRange;
 import org.apache.accumulo.core.data.TableId;
@@ -62,9 +64,13 @@ import 
org.apache.accumulo.core.metadata.schema.DataFileValue;
 import org.apache.accumulo.core.sample.impl.SamplerConfigurationImpl;
 import org.apache.accumulo.core.spi.common.ServiceEnvironment;
 import org.apache.accumulo.core.spi.compaction.CompactionDispatcher;
+import org.apache.accumulo.core.spi.compaction.CompactionPlanner;
+import org.apache.accumulo.core.spi.compaction.CompactionServiceId;
 import org.apache.accumulo.core.summary.SummarizerFactory;
 import org.apache.accumulo.core.summary.SummaryCollection;
 import org.apache.accumulo.core.summary.SummaryReader;
+import org.apache.accumulo.core.util.compaction.CompactionPlannerInitParams;
+import org.apache.accumulo.core.util.compaction.CompactionServicesConfig;
 import org.apache.accumulo.server.ServerContext;
 import org.apache.accumulo.server.ServiceEnvironmentImpl;
 import org.apache.accumulo.server.tablets.TabletNameGenerator;
@@ -345,4 +351,33 @@ public class CompactionPluginUtils {
 
     return dispatcher;
   }
+
+  /**
+   * Inspect configuration and determines what resource groups are configured 
for compaction.
+   */
+  public static Set<String> 
getConfiguredCompactionResourceGroups(ServerContext ctx)
+      throws ReflectiveOperationException {
+
+    Set<String> groups = new HashSet<>();
+    AccumuloConfiguration config = ctx.getConfiguration();
+    CompactionServicesConfig servicesConfig = new 
CompactionServicesConfig(config);
+
+    for (var entry : servicesConfig.getPlanners().entrySet()) {
+      String serviceId = entry.getKey();
+      String plannerClassName = entry.getValue();
+
+      Class<? extends CompactionPlanner> plannerClass =
+          Class.forName(plannerClassName).asSubclass(CompactionPlanner.class);
+      CompactionPlanner planner = 
plannerClass.getDeclaredConstructor().newInstance();
+
+      var initParams = new 
CompactionPlannerInitParams(CompactionServiceId.of(serviceId),
+          servicesConfig.getPlannerPrefix(serviceId), 
servicesConfig.getOptions().get(serviceId),
+          new ServiceEnvironmentImpl(ctx));
+
+      planner.init(initParams);
+
+      
initParams.getRequestedGroups().stream().map(AbstractId::canonical).forEach(groups::add);
+    }
+    return groups;
+  }
 }
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java 
b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index 5ff232765c..60e09f3dd8 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@ -107,7 +107,6 @@ import 
org.apache.accumulo.core.manager.thrift.TabletServerStatus;
 import org.apache.accumulo.core.metadata.SystemTables;
 import org.apache.accumulo.core.metadata.TServerInstance;
 import org.apache.accumulo.core.metadata.schema.Ample.DataLevel;
-import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
 import org.apache.accumulo.core.metrics.MetricsInfo;
 import org.apache.accumulo.core.metrics.MetricsProducer;
 import org.apache.accumulo.core.trace.TraceUtil;
@@ -609,11 +608,6 @@ public class Manager extends AbstractServer
     return compactionCoordinator;
   }
 
-  @Override
-  public void recordCompactionCompletion(ExternalCompactionId ecid) {
-    getCompactionCoordinator().recordCompletion(ecid);
-  }
-
   public void hostOndemand(List<KeyExtent> extents) {
     extents.forEach(e -> Preconditions.checkArgument(DataLevel.of(e.tableId()) 
== DataLevel.USER));
 
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
index 0ff67d4850..4da7b76fa5 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java
@@ -27,7 +27,6 @@ import static 
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType
 import static 
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.OPID;
 import static 
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.PREV_ROW;
 import static 
org.apache.accumulo.core.metadata.schema.TabletMetadata.ColumnType.SELECTED;
-import static 
org.apache.accumulo.core.util.threads.ThreadPoolNames.COMPACTOR_RUNNING_COMPACTIONS_POOL;
 
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -62,16 +61,13 @@ import 
org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.TableDeletedException;
 import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.compaction.CompactableFile;
-import org.apache.accumulo.core.client.admin.servers.ServerId;
 import org.apache.accumulo.core.clientImpl.thrift.SecurityErrorCode;
 import org.apache.accumulo.core.clientImpl.thrift.TInfo;
 import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.compaction.thrift.CompactionCoordinatorService;
 import org.apache.accumulo.core.compaction.thrift.TCompactionState;
 import org.apache.accumulo.core.compaction.thrift.TCompactionStatusUpdate;
-import org.apache.accumulo.core.compaction.thrift.TExternalCompaction;
 import org.apache.accumulo.core.compaction.thrift.TNextCompactionJob;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.ResourceGroupId;
 import org.apache.accumulo.core.data.TableId;
@@ -104,16 +100,12 @@ import org.apache.accumulo.core.metrics.MetricsProducer;
 import org.apache.accumulo.core.securityImpl.thrift.TCredentials;
 import org.apache.accumulo.core.spi.compaction.CompactionJob;
 import org.apache.accumulo.core.spi.compaction.CompactionKind;
-import org.apache.accumulo.core.spi.compaction.CompactionPlanner;
-import org.apache.accumulo.core.spi.compaction.CompactionServiceId;
 import org.apache.accumulo.core.tabletserver.thrift.InputFile;
 import org.apache.accumulo.core.tabletserver.thrift.IteratorConfig;
 import org.apache.accumulo.core.tabletserver.thrift.TCompactionKind;
 import org.apache.accumulo.core.tabletserver.thrift.TCompactionStats;
 import org.apache.accumulo.core.tabletserver.thrift.TExternalCompactionJob;
 import org.apache.accumulo.core.util.cache.Caches.CacheName;
-import org.apache.accumulo.core.util.compaction.CompactionPlannerInitParams;
-import org.apache.accumulo.core.util.compaction.CompactionServicesConfig;
 import org.apache.accumulo.core.util.compaction.ExternalCompactionUtil;
 import org.apache.accumulo.core.util.threads.ThreadPools;
 import org.apache.accumulo.core.util.threads.Threads;
@@ -127,7 +119,6 @@ import 
org.apache.accumulo.manager.compaction.queue.CompactionJobQueues;
 import org.apache.accumulo.manager.compaction.queue.ResolvedCompactionJob;
 import org.apache.accumulo.manager.tableOps.FateEnv;
 import org.apache.accumulo.server.ServerContext;
-import org.apache.accumulo.server.ServiceEnvironmentImpl;
 import org.apache.accumulo.server.compaction.CompactionConfigStorage;
 import org.apache.accumulo.server.compaction.CompactionPluginUtils;
 import org.apache.accumulo.server.security.AuditedSecurityOperation;
@@ -135,7 +126,6 @@ import 
org.apache.accumulo.server.tablets.TabletNameGenerator;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.thrift.TException;
 import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -146,7 +136,6 @@ import com.github.benmanes.caffeine.cache.LoadingCache;
 import com.github.benmanes.caffeine.cache.Weigher;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Suppliers;
-import com.google.common.collect.Sets;
 import com.google.common.net.HostAndPort;
 
 import io.micrometer.core.instrument.MeterRegistry;
@@ -191,16 +180,6 @@ public class CompactionCoordinator
   public static final String RESTART_UPDATE_MSG =
       "Coordinator restarted, compaction found in progress";
 
-  /*
-   * Map of compactionId to TExternalCompaction. This is an informational 
cache of what external
-   * compactions may be running. Its possible it may contain external 
compactions that are not
-   * actually running. It may not contain compactions that are actually 
running. The metadata table
-   * is the most authoritative source of what external compactions are 
currently running, but it
-   * does not have the stats that this map has.
-   */
-  protected final Map<ExternalCompactionId,TExternalCompaction> RUNNING_CACHE =
-      new ConcurrentHashMap<>();
-
   private final ServerContext ctx;
   private final AuditedSecurityOperation security;
   private final CompactionJobQueues jobQueues;
@@ -308,7 +287,7 @@ public class CompactionCoordinator
 
   protected void startInternalStateCleaner(ScheduledThreadPoolExecutor 
schedExecutor) {
     ScheduledFuture<?> future =
-        schedExecutor.scheduleWithFixedDelay(this::cleanUpInternalState, 0, 5, 
TimeUnit.MINUTES);
+        schedExecutor.scheduleWithFixedDelay(this::resizeThreadPools, 0, 5, 
TimeUnit.MINUTES);
     ThreadPools.watchNonCriticalScheduledTask(future);
   }
 
@@ -331,30 +310,6 @@ public class CompactionCoordinator
     startConfigMonitor(ctx.getScheduledExecutor());
     startCompactorZKCleaner(ctx.getScheduledExecutor());
 
-    // On a re-start of the coordinator it's possible that external 
compactions are in-progress.
-    // Attempt to get the running compactions on the compactors and then 
resolve which tserver
-    // the external compaction came from to re-populate the RUNNING collection.
-    LOG.info("Checking for running external compactions");
-    // On re-start contact the running Compactors to try and seed the list of 
running compactions
-    try {
-      List<TExternalCompaction> running = getCompactionsRunningOnCompactors();
-      if (running.isEmpty()) {
-        LOG.info("No running external compactions found");
-      } else {
-        LOG.info("Found {} running external compactions", running.size());
-        running.forEach(tec -> {
-          TCompactionStatusUpdate update = new TCompactionStatusUpdate();
-          update.setState(TCompactionState.IN_PROGRESS);
-          update.setMessage(RESTART_UPDATE_MSG);
-          tec.putToUpdates(coordinatorStartTime, update);
-          
RUNNING_CACHE.put(ExternalCompactionId.of(tec.getJob().getExternalCompactionId()),
 tec);
-        });
-      }
-    } catch (InterruptedException e) {
-      throw new IllegalStateException(
-          "Thread interrupted while retrieving running compactions from 
compactors", e);
-    }
-
     startDeadCompactionDetector();
     startFailureSummaryLogging();
     startInternalStateCleaner(ctx.getScheduledExecutor());
@@ -372,14 +327,6 @@ public class CompactionCoordinator
     deadCompactionDetector.start();
   }
 
-  protected long getMissingCompactorWarningTime() {
-    return 
this.ctx.getConfiguration().getTimeInMillis(Property.COMPACTOR_MAX_JOB_WAIT_TIME)
 * 3;
-  }
-
-  public long getNumRunningCompactions() {
-    return RUNNING_CACHE.size();
-  }
-
   /**
    * Return the next compaction job from the queue to a Compactor
    *
@@ -425,13 +372,6 @@ public class CompactionCoordinator
 
       if (ecm != null) {
         result = createThriftJob(externalCompactionId, ecm, rcJob, 
compactionConfig);
-        // It is possible that by the time this added that the the compactor 
that made this request
-        // is dead. In this cases the compaction is not actually running.
-        TExternalCompaction tec = new TExternalCompaction();
-        tec.setCompactor(compactorAddress);
-        tec.setGroupName(groupName);
-        tec.setJob(result);
-        
RUNNING_CACHE.put(ExternalCompactionId.of(result.getExternalCompactionId()), 
tec);
         TabletLogger.compacting(rcJob.getExtent(), rcJob.getSelectedFateId(), 
cid, compactorAddress,
             rcJob, ecm.getCompactTmpName());
         break;
@@ -913,8 +853,6 @@ public class CompactionCoordinator
         }
       });
     }
-
-    compactions.values().forEach(ecids -> 
ecids.forEach(this::recordCompletion));
   }
 
   /**
@@ -938,26 +876,6 @@ public class CompactionCoordinator
     }
     LOG.debug("Compaction status update, id: {}, timestamp: {}, update: {}", 
externalCompactionId,
         timestamp, update);
-    final TExternalCompaction tec =
-        RUNNING_CACHE.get(ExternalCompactionId.of(externalCompactionId));
-    if (null != tec) {
-      if (update.getState() == TCompactionState.STARTED) {
-        tec.setStartTime(timestamp);
-      }
-      tec.putToUpdates(timestamp, update);
-    }
-  }
-
-  @Override
-  public void recordCompletion(TInfo tinfo, TCredentials credentials, String 
externalCompactionId)
-      throws TException {
-    if (security.canPerformSystemActions(credentials)) {
-      recordCompletion(ExternalCompactionId.of(externalCompactionId));
-    }
-  }
-
-  public void recordCompletion(ExternalCompactionId ecid) {
-    var tec = RUNNING_CACHE.remove(ecid);
   }
 
   protected Set<ExternalCompactionId> readExternalCompactionIds() {
@@ -974,35 +892,6 @@ public class CompactionCoordinator
     return jobQueues;
   }
 
-  /* Method exists to be overridden in test to hide static method */
-  protected List<TExternalCompaction> getCompactionsRunningOnCompactors()
-      throws InterruptedException {
-    int numCompactors = 
this.ctx.instanceOperations().getServers(ServerId.Type.COMPACTOR).size();
-    final ExecutorService executor =
-        
ThreadPools.getServerThreadPools().getPoolBuilder(COMPACTOR_RUNNING_COMPACTIONS_POOL)
-            .numCoreThreads(numCompactors / 10).build();
-    try {
-      List<TExternalCompaction> running = new ArrayList<>();
-      @SuppressWarnings("unused")
-      List<ServerId> failures = 
ExternalCompactionUtil.getCompactionsRunningOnCompactors(this.ctx,
-          executor, (t) -> running.add(t));
-      return running;
-    } finally {
-      executor.shutdownNow();
-    }
-  }
-
-  /* Method exists to be overridden in test to hide static method */
-  protected Set<ServerId> getRunningCompactors() {
-    return ctx.instanceOperations().getServers(ServerId.Type.COMPACTOR);
-  }
-
-  /* Method exists to be overridden in test to hide static method */
-  protected void cancelCompactionOnCompactor(String address, String 
externalCompactionId) {
-    HostAndPort hostPort = HostAndPort.fromString(address);
-    ExternalCompactionUtil.cancelCompaction(this.ctx, hostPort, 
externalCompactionId);
-  }
-
   private void deleteEmpty(ZooReaderWriter zoorw, String path)
       throws KeeperException, InterruptedException {
     try {
@@ -1052,44 +941,7 @@ public class CompactionCoordinator
     }
   }
 
-  private Set<ResourceGroupId> getCompactionServicesConfigurationGroups()
-      throws ReflectiveOperationException, IllegalArgumentException, 
SecurityException {
-
-    Set<ResourceGroupId> groups = new HashSet<>();
-    AccumuloConfiguration config = ctx.getConfiguration();
-    CompactionServicesConfig servicesConfig = new 
CompactionServicesConfig(config);
-
-    for (var entry : servicesConfig.getPlanners().entrySet()) {
-      String serviceId = entry.getKey();
-      String plannerClassName = entry.getValue();
-
-      Class<? extends CompactionPlanner> plannerClass =
-          Class.forName(plannerClassName).asSubclass(CompactionPlanner.class);
-      CompactionPlanner planner = 
plannerClass.getDeclaredConstructor().newInstance();
-
-      var initParams = new 
CompactionPlannerInitParams(CompactionServiceId.of(serviceId),
-          servicesConfig.getPlannerPrefix(serviceId), 
servicesConfig.getOptions().get(serviceId),
-          new ServiceEnvironmentImpl(ctx));
-
-      planner.init(initParams);
-
-      groups.addAll(initParams.getRequestedGroups());
-    }
-    return groups;
-  }
-
-  public void cleanUpInternalState() {
-
-    // This method does the following:
-    //
-    // 1. Removes entries from RUNNING_CACHE and 
LONG_RUNNING_COMPACTIONS_BY_RG that are not really
-    // running
-    // 2. Cancels running compactions for groups that are not in the current 
configuration
-    // 3. Remove groups not in configuration from TIME_COMPACTOR_LAST_CHECKED
-    // 4. Log groups with no compactors
-    // 5. Log compactors with no groups
-    // 6. Log groups with compactors and queued jos that have not checked in
-
+  public void resizeThreadPools() {
     var config = ctx.getConfiguration();
     ThreadPools.resizePool(reservationPools.get(DataLevel.ROOT), config,
         Property.COMPACTION_COORDINATOR_RESERVATION_THREADS_ROOT);
@@ -1097,81 +949,5 @@ public class CompactionCoordinator
         Property.COMPACTION_COORDINATOR_RESERVATION_THREADS_META);
     ThreadPools.resizePool(reservationPools.get(DataLevel.USER), config,
         Property.COMPACTION_COORDINATOR_RESERVATION_THREADS_USER);
-
-    // grab a snapshot of the ids in the set before reading the metadata 
table. This is done to
-    // avoid removing things that are added while reading the metadata.
-    final Set<ExternalCompactionId> idsSnapshot = 
Set.copyOf(RUNNING_CACHE.keySet());
-
-    // grab the ids that are listed as running in the metadata table. It 
important that this is done
-    // after getting the snapshot.
-    final Set<ExternalCompactionId> idsInMetadata = 
readExternalCompactionIds();
-    LOG.trace("Current ECIDs in metadata: {}", idsInMetadata.size());
-    LOG.trace("Current ECIDs in running cache: {}", idsSnapshot.size());
-
-    final Set<ExternalCompactionId> idsToRemove = Sets.difference(idsSnapshot, 
idsInMetadata);
-
-    // remove ids that are in the running set but not in the metadata table
-    idsToRemove.forEach(this::recordCompletion);
-    if (idsToRemove.size() > 0) {
-      LOG.debug("Removed stale entries from RUNNING_CACHE : {}", idsToRemove);
-    }
-
-    // Get the set of groups being referenced in the current configuration
-    Set<ResourceGroupId> groupsInConfiguration = null;
-    try {
-      groupsInConfiguration = getCompactionServicesConfigurationGroups();
-    } catch (RuntimeException | ReflectiveOperationException e) {
-      LOG.error(
-          "Error getting groups from the compaction services configuration. 
Unable to clean up internal state.",
-          e);
-      return;
-    }
-
-    // Compaction jobs are created in the TabletGroupWatcher and added to the 
Coordinator
-    // via the addJobs method which adds the job to the CompactionJobQueues 
object.
-    final Set<ResourceGroupId> groupsWithJobs = jobQueues.getQueueIds();
-
-    final Set<ResourceGroupId> jobGroupsNotInConfiguration =
-        Sets.difference(groupsWithJobs, groupsInConfiguration);
-
-    if (jobGroupsNotInConfiguration != null && 
!jobGroupsNotInConfiguration.isEmpty()) {
-      RUNNING_CACHE.values().forEach(tec -> {
-        if 
(jobGroupsNotInConfiguration.contains(ResourceGroupId.of(tec.getGroupName()))) {
-          LOG.warn(
-              "External compaction {} running in group {} on compactor {},"
-                  + " but group not found in current configuration. Failing 
compaction...",
-              tec.getJob().getExternalCompactionId(), tec.getGroupName(), 
tec.getCompactor());
-          cancelCompactionOnCompactor(tec.getCompactor(), 
tec.getJob().getExternalCompactionId());
-        }
-      });
-
-    }
-
-    final Set<ServerId> runningCompactors = getRunningCompactors();
-
-    final Set<ResourceGroupId> runningCompactorGroups = new HashSet<>();
-    runningCompactors.forEach(
-        c -> 
runningCompactorGroups.add(ResourceGroupId.of(c.getResourceGroup().canonical())));
-
-    final Set<ResourceGroupId> groupsWithNoCompactors =
-        Sets.difference(groupsInConfiguration, runningCompactorGroups);
-    if (groupsWithNoCompactors != null && !groupsWithNoCompactors.isEmpty()) {
-      for (ResourceGroupId group : groupsWithNoCompactors) {
-        long queuedJobCount = jobQueues.getQueuedJobs(group);
-        if (queuedJobCount > 0) {
-          LOG.warn("Compactor group {} has {} queued compactions but no 
running compactors", group,
-              queuedJobCount);
-        }
-      }
-    }
-
-    final Set<ResourceGroupId> compactorsWithNoGroups =
-        Sets.difference(runningCompactorGroups, groupsInConfiguration);
-    if (compactorsWithNoGroups != null && !compactorsWithNoGroups.isEmpty()) {
-      LOG.warn(
-          "The following groups have running compactors, but are not in the 
current configuration: {}",
-          compactorsWithNoGroups);
-    }
-
   }
 }
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java
index 3933a62504..89cdedab8e 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/PutGcCandidates.java
@@ -20,7 +20,6 @@ package 
org.apache.accumulo.manager.compaction.coordinator.commit;
 
 import org.apache.accumulo.core.fate.FateId;
 import org.apache.accumulo.core.fate.Repo;
-import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
 import org.apache.accumulo.manager.tableOps.AbstractFateOperation;
 import org.apache.accumulo.manager.tableOps.FateEnv;
 
@@ -41,7 +40,6 @@ public class PutGcCandidates extends AbstractFateOperation {
     env.getContext().getAmple().putGcCandidates(commitData.getTableId(), 
commitData.getJobFiles());
 
     if (refreshLocation == null) {
-      env.recordCompactionCompletion(ExternalCompactionId.of(commitData.ecid));
       return null;
     }
 
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java
index d3be75c012..cdcf649e02 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/RefreshTablet.java
@@ -27,7 +27,6 @@ import org.apache.accumulo.core.dataImpl.thrift.TKeyExtent;
 import org.apache.accumulo.core.fate.FateId;
 import org.apache.accumulo.core.fate.Repo;
 import org.apache.accumulo.core.metadata.TServerInstance;
-import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
 import org.apache.accumulo.core.metadata.schema.TabletMetadata;
 import org.apache.accumulo.manager.tableOps.AbstractFateOperation;
 import org.apache.accumulo.manager.tableOps.FateEnv;
@@ -63,8 +62,6 @@ public class RefreshTablet extends AbstractFateOperation {
       executorService.shutdownNow();
     }
 
-    env.recordCompactionCompletion(ExternalCompactionId.of(compactionId));
-
     return null;
   }
 }
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java
index e7909dd0a7..01cf2baea2 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java
@@ -28,18 +28,15 @@ import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.compaction.thrift.CompactionCoordinatorService;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.lock.ServiceLock;
 import org.apache.accumulo.core.metadata.TServerInstance;
 import org.apache.accumulo.core.metadata.schema.Ample;
-import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
 import org.apache.accumulo.core.rpc.ThriftUtil;
 import org.apache.accumulo.core.rpc.clients.ThriftClientTypes;
 import org.apache.accumulo.core.trace.TraceUtil;
-import org.apache.accumulo.core.util.compaction.ExternalCompactionUtil;
 import org.apache.accumulo.core.util.threads.ThreadPools;
 import org.apache.accumulo.core.util.threads.Threads;
 import org.apache.accumulo.core.util.time.SteadyTime;
@@ -176,26 +173,6 @@ public class FateWorkerEnv implements FateEnv {
     return eventHandler;
   }
 
-  @Override
-  public void recordCompactionCompletion(ExternalCompactionId ecid) {
-    var coordinatorHost = 
ExternalCompactionUtil.findCompactionCoordinator(getContext());
-    if (coordinatorHost.isPresent()) {
-      CompactionCoordinatorService.Client client = null;
-      try {
-        client = ThriftUtil.getClient(ThriftClientTypes.COORDINATOR, 
coordinatorHost.orElseThrow(),
-            getContext());
-        client.recordCompletion(TraceUtil.traceInfo(), 
getContext().rpcCreds(), ecid.canonical());
-        log.trace("Sent compaction completion {} {}", coordinatorHost, ecid);
-      } catch (TException te) {
-        log.trace("Failed to send compaction completion {} {}", 
coordinatorHost, ecid, te);
-      } finally {
-        ThriftUtil.returnClient(client, getContext());
-      }
-    } else {
-      log.trace("No coordinator found, dropping compaction completion for {}", 
ecid);
-    }
-  }
-
   @Override
   public Set<TServerInstance> onlineTabletServers() {
     return liveTServerSet.getSnapshot().getTservers();
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java
index f64b3851ae..9eece1208f 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/FateEnv.java
@@ -23,7 +23,6 @@ import java.util.concurrent.ExecutorService;
 
 import org.apache.accumulo.core.lock.ServiceLock;
 import org.apache.accumulo.core.metadata.TServerInstance;
-import org.apache.accumulo.core.metadata.schema.ExternalCompactionId;
 import org.apache.accumulo.core.util.time.SteadyTime;
 import org.apache.accumulo.manager.EventPublisher;
 import org.apache.accumulo.manager.split.FileRangeCache;
@@ -36,8 +35,6 @@ public interface FateEnv {
 
   EventPublisher getEventPublisher();
 
-  void recordCompactionCompletion(ExternalCompactionId ecid);
-
   Set<TServerInstance> onlineTabletServers();
 
   TableManager getTableManager();
diff --git 
a/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java
 
b/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java
index 3aa3f848d6..fcb8d9afb1 100644
--- 
a/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java
+++ 
b/server/manager/src/test/java/org/apache/accumulo/manager/compaction/CompactionCoordinatorTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.accumulo.manager.compaction;
 
-import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.easymock.EasyMock.anyObject;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
@@ -32,7 +31,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
@@ -40,7 +38,6 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.accumulo.core.client.admin.CompactionConfig;
-import org.apache.accumulo.core.client.admin.servers.ServerId;
 import org.apache.accumulo.core.clientImpl.thrift.TInfo;
 import org.apache.accumulo.core.clientImpl.thrift.ThriftSecurityException;
 import org.apache.accumulo.core.compaction.thrift.TCompactionState;
@@ -84,14 +81,10 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInfo;
 
-import com.google.common.net.HostAndPort;
-
 public class CompactionCoordinatorTest {
 
   private static final ResourceGroupId GROUP_ID = ResourceGroupId.of("R2DQ");
 
-  private final HostAndPort tserverAddr = HostAndPort.fromParts("192.168.1.1", 
9090);
-
   public MetricsInfo getMockMetrics() {
     MetricsInfo metricsInfo = createMock(MetricsInfo.class);
     metricsInfo.addMetricsProducers(anyObject());
@@ -150,34 +143,10 @@ public class CompactionCoordinatorTest {
       metadataCompactionIds = mci;
     }
 
-    @Override
-    protected Set<ExternalCompactionId> readExternalCompactionIds() {
-      if (metadataCompactionIds == null) {
-        return RUNNING_CACHE.keySet();
-      } else {
-        return metadataCompactionIds;
-      }
-    }
-
-    public Map<ExternalCompactionId,TExternalCompaction> getRunning() {
-      return RUNNING_CACHE;
-    }
-
     public void resetInternals() {
-      getRunning().clear();
       metadataCompactionIds = null;
     }
 
-    @Override
-    protected List<TExternalCompaction> getCompactionsRunningOnCompactors() {
-      return runningCompactions;
-    }
-
-    @Override
-    protected Set<ServerId> getRunningCompactors() {
-      return Set.of();
-    }
-
     @Override
     protected CompactionMetadata reserveCompaction(ResolvedCompactionJob rcJob,
         String compactorAddress, ExternalCompactionId externalCompactionId) {
@@ -206,10 +175,6 @@ public class CompactionCoordinatorTest {
               .toThrift(),
           Map.of());
     }
-
-    @Override
-    protected void cancelCompactionOnCompactor(String address, String 
externalCompactionId) {}
-
   }
 
   private TableId tableId;
@@ -259,50 +224,10 @@ public class CompactionCoordinatorTest {
   public void testCoordinatorColdStart() throws Exception {
     var coordinator = new TestCoordinator(manager, new ArrayList<>());
     assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(0, coordinator.getRunning().size());
     coordinator.run();
     coordinator.shutdown();
 
     assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(0, coordinator.getRunning().size());
-  }
-
-  @Test
-  public void testCoordinatorRestartOneRunningCompaction() throws Exception {
-    List<TExternalCompaction> runningCompactions = new ArrayList<>();
-    ExternalCompactionId eci = 
ExternalCompactionId.generate(UUID.randomUUID());
-
-    TExternalCompactionJob job = createMock(TExternalCompactionJob.class);
-    
expect(job.getExternalCompactionId()).andReturn(eci.toString()).atLeastOnce();
-    TKeyExtent extent = new TKeyExtent();
-    extent.setTable("1".getBytes(UTF_8));
-
-    TExternalCompaction current = new TExternalCompaction();
-    current.setCompactor(tserverAddr.toString());
-    current.setGroupName(GROUP_ID.canonical());
-    current.setJob(job);
-
-    runningCompactions.add(current);
-
-    replay(job);
-
-    var coordinator = new TestCoordinator(manager, runningCompactions);
-    coordinator.resetInternals();
-    assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(0, coordinator.getRunning().size());
-    coordinator.run();
-    coordinator.shutdown();
-    assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(1, coordinator.getRunning().size());
-
-    Map<ExternalCompactionId,TExternalCompaction> running = 
coordinator.getRunning();
-    Entry<ExternalCompactionId,TExternalCompaction> ecomp = 
running.entrySet().iterator().next();
-    assertEquals(eci, ecomp.getKey());
-    TExternalCompaction tec = ecomp.getValue();
-    assertEquals(GROUP_ID, ResourceGroupId.of(tec.getGroupName()));
-    assertEquals(tserverAddr.toString(), tec.getCompactor());
-
-    verify(job);
   }
 
   @Test
@@ -318,14 +243,12 @@ public class CompactionCoordinatorTest {
 
     var coordinator = new TestCoordinator(manager, new ArrayList<>());
     assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(0, coordinator.getRunning().size());
     // Use coordinator.run() to populate the internal data structures. This is 
tested in a different
     // test.
     coordinator.run();
     coordinator.shutdown();
 
     assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(0, coordinator.getRunning().size());
 
     // Add a job to the job queue
     CompactionJob job =
@@ -344,12 +267,6 @@ public class CompactionCoordinatorTest {
     assertEquals(ke, KeyExtent.fromThrift(createdJob.getExtent()));
 
     assertEquals(0, coordinator.getJobQueues().getQueuedJobCount());
-    assertEquals(1, coordinator.getRunning().size());
-    Entry<ExternalCompactionId,TExternalCompaction> entry =
-        coordinator.getRunning().entrySet().iterator().next();
-    assertEquals(eci.toString(), entry.getKey().toString());
-    assertEquals("localhost:10241", entry.getValue().getCompactor());
-    assertEquals(eci.toString(), 
entry.getValue().getJob().getExternalCompactionId());
 
     verify(tm);
   }
@@ -362,32 +279,4 @@ public class CompactionCoordinatorTest {
     assertEquals(3, nextJob.getCompactorCount());
     assertNull(nextJob.getJob().getExternalCompactionId());
   }
-
-  @Test
-  public void testCleanUpRunning() throws Exception {
-    TExternalCompaction ext1 = createMock(TExternalCompaction.class);
-    TExternalCompaction ext2 = createMock(TExternalCompaction.class);
-    TExternalCompaction ext3 = createMock(TExternalCompaction.class);
-    replay(ext1, ext2, ext3);
-
-    TestCoordinator coordinator = new TestCoordinator(manager, new 
ArrayList<>());
-
-    var ecid1 = ExternalCompactionId.generate(UUID.randomUUID());
-    var ecid2 = ExternalCompactionId.generate(UUID.randomUUID());
-    var ecid3 = ExternalCompactionId.generate(UUID.randomUUID());
-
-    coordinator.getRunning().put(ecid1, ext1);
-    coordinator.getRunning().put(ecid2, ext2);
-    coordinator.getRunning().put(ecid3, ext3);
-    coordinator.cleanUpInternalState();
-
-    assertEquals(Set.of(ecid1, ecid2, ecid3), 
coordinator.getRunning().keySet());
-
-    coordinator.setMetadataCompactionIds(Set.of(ecid1, ecid2));
-    coordinator.cleanUpInternalState();
-
-    assertEquals(Set.of(ecid1, ecid2), coordinator.getRunning().keySet());
-
-    verify(ext1, ext2, ext3);
-  }
 }
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
index cb67c61fc4..9b27141f0d 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java
@@ -53,6 +53,7 @@ import org.apache.accumulo.core.util.UtilWaitThread;
 import org.apache.accumulo.core.util.compaction.ExternalCompactionUtil;
 import org.apache.accumulo.core.util.threads.ThreadPools;
 import org.apache.accumulo.server.ServerContext;
+import org.apache.accumulo.server.compaction.CompactionPluginUtils;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.eclipse.jetty.util.NanoTime;
 import org.slf4j.Logger;
@@ -305,6 +306,15 @@ public class InformationFetcher implements 
RemovalListener<ServerId,MetricRespon
         futures.add(this.pool.submit(new TableInformationFetcher(this.ctx, 
tableId, summary)));
       }
 
+      futures.add(this.pool.submit(() -> {
+        try {
+          var groups = 
CompactionPluginUtils.getConfiguredCompactionResourceGroups(ctx);
+          summary.addConfiguredCompactionGroups(groups);
+        } catch (ReflectiveOperationException e) {
+          throw new IllegalStateException(e);
+        }
+      }));
+
       long monitorFetchTimeout =
           
ctx.getConfiguration().getTimeInMillis(Property.MONITOR_FETCH_TIMEOUT);
       long allFuturesAdded = NanoTime.now();
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/SystemInformation.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/SystemInformation.java
index 2a5148010f..3de740a1b8 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/SystemInformation.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/SystemInformation.java
@@ -415,6 +415,8 @@ public class SystemInformation {
 
   private final Set<String> suggestions = new ConcurrentSkipListSet<>();
 
+  private final Set<String> configuredCompactionResourceGroups = 
ConcurrentHashMap.newKeySet();
+
   private long timestamp = 0;
   private ScanServerView scanServerView;
   private final int rgLongRunningCompactionSize;
@@ -448,6 +450,7 @@ public class SystemInformation {
     suggestions.clear();
     runningCompactionsPerGroup.clear();
     runningCompactionsPerTable.clear();
+    configuredCompactionResourceGroups.clear();
     scanServerView = null;
   }
 
@@ -580,6 +583,10 @@ public class SystemInformation {
     problemHosts.add(server);
   }
 
+  public void addConfiguredCompactionGroups(Set<String> groups) {
+    configuredCompactionResourceGroups.addAll(groups);
+  }
+
   public void finish() {
     // Update the deployment not-responded numbers based
     // on the problem hosts.
@@ -627,6 +634,14 @@ public class SystemInformation {
         }
       }
     }
+
+    for (var compactorGroup : compactors.keySet()) {
+      if (!configuredCompactionResourceGroups.contains(compactorGroup)) {
+        suggestions.add("Compactor group " + compactorGroup
+            + " has running compactors, but no configuration uses them.");
+      }
+    }
+
     Set<ServerId> scanServers = new HashSet<>();
     sservers.values().forEach(scanServers::addAll);
     int problemScanServerCount = (int) problemHosts.stream()


Reply via email to