void partitionCompactionControl() throws SQLException {
    Set<Long> partitionsUnderRepair = getPartitionIdsNeedRepair();
    for (long partition : partitionsCompactionDisabled) {
      if (!partitionsUnderRepair.contains(partition)) {
        partitionsCompactionDisabled.remove(partition);
        PartitionId partitionId = clusterMap.getPartitionIdByName(Long.toString(partition));
        storageManager.controlCompactionForBlobStore(partitionId, true);
        logger.info("RepairRequests Sender: enable compaction on {} {}", nodeId, partitionId);
      }
    }
    for (long partition : partitionsUnderRepair) {
      if (!partitionsCompactionDisabled.contains(partition)) {
        partitionsCompactionDisabled.add(partition);
        PartitionId partitionId = clusterMap.getPartitionIdByName(Long.toString(partition));
        storageManager.controlCompactionForBlobStore(partitionId, false);
        logger.info("RepairRequests Sender: disable compaction on {} {}", nodeId, partitionId);
      }
    }
  }
RepairRequestsSender constructor
@param requestChannel the channel to send requests and receive responses
@param factory the {@link LocalNetworkClientFactory} used to generate the {@link LocalNetworkClient}
@param clusterMap the cluster map
@param nodeId this {@link DataNodeId}
@param repairRequestsDb the database to get the RepairRequestRecord
@param clusterParticipant {@link ClusterParticipant}
@param metricsRegistry the {@link MetricRegistry} to record metrics
ambry-server/src/main/java/com/github/ambry/server/RepairRequestsSender.java