You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2023/05/10 13:56:46 UTC

[accumulo] branch 2.1 updated: Fix DefaultCompactionPlanner SPI

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

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


The following commit(s) were added to refs/heads/2.1 by this push:
     new 031b9c24b7 Fix DefaultCompactionPlanner SPI
031b9c24b7 is described below

commit 031b9c24b7781e0f54dccc57ed484ad26af4b1e4
Author: Christopher Tubbs <ct...@apache.org>
AuthorDate: Wed May 10 09:44:34 2023 -0400

    Fix DefaultCompactionPlanner SPI
    
    Backport some changes from PR #3378 for 3.0 into 2.1 to fix issue #3377
    Specifically, backport the changes to DefaultCompactionPlanner (its unit
    test) to make private some of its internal implementation methods that
    were unintentionally left public. This also includes the name changes to
    those methods that were part of PR #3378, to reduce merge conflicts.
    
    This fixes #3377
---
 .../core/spi/compaction/DefaultCompactionPlanner.java  | 18 +++++++++---------
 .../spi/compaction/DefaultCompactionPlannerTest.java   |  2 +-
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java b/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
index 040296e140..4657108cc5 100644
--- a/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlanner.java
@@ -115,7 +115,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
 
   private static final Logger log = LoggerFactory.getLogger(DefaultCompactionPlanner.class);
 
-  public static class ExecutorConfig {
+  private static class ExecutorConfig {
     String type;
     String name;
     String maxSize;
@@ -238,7 +238,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
 
       Collection<CompactableFile> group;
       if (params.getRunningCompactions().isEmpty()) {
-        group = findMapFilesToCompact(filesCopy, params.getRatio(), maxFilesToCompact,
+        group = findDataFilesToCompact(filesCopy, params.getRatio(), maxFilesToCompact,
             maxSizeToCompact);
 
         if (!group.isEmpty() && group.size() < params.getCandidates().size()
@@ -253,7 +253,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
           filesCopy.removeAll(group);
           filesCopy.add(getExpected(group, 0));
 
-          if (findMapFilesToCompact(filesCopy, params.getRatio(), maxFilesToCompact,
+          if (findDataFilesToCompact(filesCopy, params.getRatio(), maxFilesToCompact,
               maxSizeToCompact).isEmpty()) {
             // The next possible compaction does not meet the compaction ratio, so compact
             // everything.
@@ -276,7 +276,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
 
         filesCopy.addAll(expectedFiles);
 
-        group = findMapFilesToCompact(filesCopy, params.getRatio(), maxFilesToCompact,
+        group = findDataFilesToCompact(filesCopy, params.getRatio(), maxFilesToCompact,
             maxSizeToCompact);
 
         if (!Collections.disjoint(group, expectedFiles)) {
@@ -354,7 +354,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
     return expected;
   }
 
-  public static Collection<CompactableFile>
+  private static Collection<CompactableFile>
       findMaximalRequiredSetToCompact(Collection<CompactableFile> files, int maxFilesToCompact) {
 
     if (files.size() <= maxFilesToCompact) {
@@ -373,7 +373,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
     return sortedFiles.subList(0, numToCompact);
   }
 
-  public static Collection<CompactableFile> findMapFilesToCompact(Set<CompactableFile> files,
+  static Collection<CompactableFile> findDataFilesToCompact(Set<CompactableFile> files,
       double ratio, int maxFilesToCompact, long maxSizeToCompact) {
     if (files.size() <= 1) {
       return Collections.emptySet();
@@ -401,7 +401,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
 
     var loops = Math.max(1, sortedFiles.size() - maxFilesToCompact + 1);
     for (int i = 0; i < loops; i++) {
-      var filesToCompact = findMapFilesToCompact(
+      var filesToCompact = findDataFilesToCompact(
           sortedFiles.subList(i, Math.min(sortedFiles.size(), maxFilesToCompact) + i), ratio);
       if (!filesToCompact.isEmpty()) {
         return filesToCompact;
@@ -441,7 +441,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
    * smaller set because of it would prevent the future compaction.
    */
   private static Collection<CompactableFile>
-      findMapFilesToCompact(List<CompactableFile> sortedFiles, double ratio) {
+      findDataFilesToCompact(List<CompactableFile> sortedFiles, double ratio) {
 
     int larsmaIndex = -1;
     long larsmaSum = Long.MIN_VALUE;
@@ -500,7 +500,7 @@ public class DefaultCompactionPlanner implements CompactionPlanner {
     return executors.get(executors.size() - 1).ceid;
   }
 
-  public static List<CompactableFile> sortByFileSize(Collection<CompactableFile> files) {
+  private static List<CompactableFile> sortByFileSize(Collection<CompactableFile> files) {
     ArrayList<CompactableFile> sortedFiles = new ArrayList<>(files);
 
     // sort from smallest file to largest
diff --git a/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java b/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
index 9f0a2ef3d6..568b57cd2d 100644
--- a/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/spi/compaction/DefaultCompactionPlannerTest.java
@@ -426,7 +426,7 @@ public class DefaultCompactionPlannerTest {
 
   private static void testFFtC(Set<CompactableFile> expected, Set<CompactableFile> files,
       double ratio, int maxFiles, long maxSize) {
-    var result = DefaultCompactionPlanner.findMapFilesToCompact(files, ratio, maxFiles, maxSize);
+    var result = DefaultCompactionPlanner.findDataFilesToCompact(files, ratio, maxFiles, maxSize);
     var expectedNames = expected.stream().map(CompactableFile::getUri).map(URI::getPath)
         .map(path -> path.split("/")).map(t -> t[t.length - 1]).collect(Collectors.toSet());
     var resultNames = result.stream().map(CompactableFile::getUri).map(URI::getPath)