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 ddff638 Use numFilesCompacting+totalTabletFiles for compaction priority (#2330) ddff638 is described below commit ddff6381197fd74f352700e13418c090ad3022c9 Author: Keith Turner <ktur...@apache.org> AuthorDate: Mon Nov 1 09:52:35 2021 -0400 Use numFilesCompacting+totalTabletFiles for compaction priority (#2330) --- .../spi/compaction/DefaultCompactionPlanner.java | 9 +++++--- .../util/compaction/CompactionJobPrioritizer.java | 13 +++++++----- .../util/compaction/CompactionPrioritizerTest.java | 24 +++++++++++++--------- 3 files changed, 28 insertions(+), 18 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 edb9b37..7046bd8 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 @@ -303,15 +303,18 @@ public class DefaultCompactionPlanner implements CompactionPlanner { // determine which executor to use based on the size of the files var ceid = getExecutor(group); - return params.createPlanBuilder().addJob(createPriority(params), ceid, group).build(); + return params.createPlanBuilder().addJob(createPriority(params, group), ceid, group) + .build(); } } catch (RuntimeException e) { throw e; } } - private static short createPriority(PlanningParameters params) { - return CompactionJobPrioritizer.createPriority(params.getKind(), params.getAll().size()); + private static short createPriority(PlanningParameters params, + Collection<CompactableFile> group) { + return CompactionJobPrioritizer.createPriority(params.getKind(), params.getAll().size(), + group.size()); } private long getMaxSizeToCompact(CompactionKind kind) { diff --git a/core/src/main/java/org/apache/accumulo/core/util/compaction/CompactionJobPrioritizer.java b/core/src/main/java/org/apache/accumulo/core/util/compaction/CompactionJobPrioritizer.java index ddd3a0b..efc3e22 100644 --- a/core/src/main/java/org/apache/accumulo/core/util/compaction/CompactionJobPrioritizer.java +++ b/core/src/main/java/org/apache/accumulo/core/util/compaction/CompactionJobPrioritizer.java @@ -30,25 +30,28 @@ public class CompactionJobPrioritizer { Comparator.comparingInt(CompactionJob::getPriority) .thenComparingInt(job -> job.getFiles().size()).reversed(); - public static short createPriority(CompactionKind kind, int totalFiles) { + public static short createPriority(CompactionKind kind, int totalFiles, int compactingFiles) { + + int prio = totalFiles + compactingFiles; + switch (kind) { case USER: case CHOP: // user-initiated compactions will have a positive priority // based on number of files - if (totalFiles > Short.MAX_VALUE) { + if (prio > Short.MAX_VALUE) { return Short.MAX_VALUE; } - return (short) totalFiles; + return (short) prio; case SELECTOR: case SYSTEM: // system-initiated compactions will have a negative priority // starting at -32768 and increasing based on number of files // maxing out at -1 - if (totalFiles > Short.MAX_VALUE) { + if (prio > Short.MAX_VALUE) { return -1; } else { - return (short) (Short.MIN_VALUE + totalFiles); + return (short) (Short.MIN_VALUE + prio); } default: throw new AssertionError("Unknown kind " + kind); diff --git a/core/src/test/java/org/apache/accumulo/core/util/compaction/CompactionPrioritizerTest.java b/core/src/test/java/org/apache/accumulo/core/util/compaction/CompactionPrioritizerTest.java index 5ff5fb3..a3299e7 100644 --- a/core/src/test/java/org/apache/accumulo/core/util/compaction/CompactionPrioritizerTest.java +++ b/core/src/test/java/org/apache/accumulo/core/util/compaction/CompactionPrioritizerTest.java @@ -42,26 +42,30 @@ public class CompactionPrioritizerTest { files.add(CompactableFile .create(URI.create("hdfs://foonn/accumulo/tables/5/" + tablet + "/" + i + ".rf"), 4, 4)); } - return new CompactionJobImpl(CompactionJobPrioritizer.createPriority(kind, totalFiles), + // TODO pass numFiles + return new CompactionJobImpl( + CompactionJobPrioritizer.createPriority(kind, totalFiles, numFiles), CompactionExecutorIdImpl.externalId("test"), files, kind, Optional.of(false)); } @Test public void testPrioritizer() throws Exception { - assertEquals((short) 0, CompactionJobPrioritizer.createPriority(CompactionKind.USER, 0)); + assertEquals((short) 0, CompactionJobPrioritizer.createPriority(CompactionKind.USER, 0, 0)); assertEquals((short) 10000, - CompactionJobPrioritizer.createPriority(CompactionKind.USER, 10000)); + CompactionJobPrioritizer.createPriority(CompactionKind.USER, 10000, 0)); assertEquals((short) 32767, - CompactionJobPrioritizer.createPriority(CompactionKind.USER, 32767)); + CompactionJobPrioritizer.createPriority(CompactionKind.USER, 32767, 0)); assertEquals((short) 32767, - CompactionJobPrioritizer.createPriority(CompactionKind.USER, Integer.MAX_VALUE)); + CompactionJobPrioritizer.createPriority(CompactionKind.USER, Integer.MAX_VALUE, 0)); - assertEquals((short) -32768, CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, 0)); + assertEquals((short) -32768, + CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, 0, 0)); assertEquals((short) -22768, - CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, 10000)); - assertEquals((short) -1, CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, 32767)); + CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, 10000, 0)); assertEquals((short) -1, - CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, Integer.MAX_VALUE)); + CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, 32767, 0)); + assertEquals((short) -1, + CompactionJobPrioritizer.createPriority(CompactionKind.SYSTEM, Integer.MAX_VALUE, 0)); } @Test @@ -74,7 +78,7 @@ public class CompactionPrioritizerTest { var j6 = createJob(CompactionKind.CHOP, "t-014", 5, 40); var j7 = createJob(CompactionKind.CHOP, "t-015", 5, 7); var j8 = createJob(CompactionKind.SELECTOR, "t-014", 5, 21); - var j9 = createJob(CompactionKind.SELECTOR, "t-015", 7, 21); + var j9 = createJob(CompactionKind.SELECTOR, "t-015", 7, 20); var expected = List.of(j6, j2, j3, j1, j7, j4, j9, j8, j5);