This is an automated email from the ASF dual-hosted git repository. cshannon 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 b5b96d7eb4 Ensure compaction queue max size is at least 1 (#5068) b5b96d7eb4 is described below commit b5b96d7eb43d1d1980d243a7aabe2b6e6cbe2107 Author: Christopher L. Shannon <cshan...@apache.org> AuthorDate: Fri Nov 15 12:49:42 2024 -0500 Ensure compaction queue max size is at least 1 (#5068) This closes #5004 --- .../manager/compaction/coordinator/CompactionCoordinator.java | 4 ++-- .../manager/compaction/queue/CompactionJobPriorityQueue.java | 2 ++ .../manager/compaction/queue/CompactionJobPriorityQueueTest.java | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) 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 7a0b275994..941d6647d0 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 @@ -1065,8 +1065,8 @@ public class CompactionCoordinator } CompactionJobPriorityQueue queue = getJobQueues().getQueue(cgid); if (queue != null) { - queue.setMaxSize( - Math.min((int) (aliveCompactorsForGroup * queueSizeFactor), Integer.MAX_VALUE)); + queue.setMaxSize(Math.min( + Math.max(1, (int) (aliveCompactorsForGroup * queueSizeFactor)), Integer.MAX_VALUE)); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueue.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueue.java index 2099dbed6d..1f9738dac7 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueue.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueue.java @@ -235,6 +235,8 @@ public class CompactionJobPriorityQueue { } public synchronized void setMaxSize(int maxSize) { + Preconditions.checkArgument(maxSize > 0, + "Maximum size of the Compaction job priority queue must be greater than 0"); this.maxSize.set(maxSize); } diff --git a/server/manager/src/test/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueueTest.java b/server/manager/src/test/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueueTest.java index 2592be35aa..37213cdc48 100644 --- a/server/manager/src/test/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueueTest.java +++ b/server/manager/src/test/java/org/apache/accumulo/manager/compaction/queue/CompactionJobPriorityQueueTest.java @@ -20,6 +20,7 @@ package org.apache.accumulo.manager.compaction.queue; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; @@ -345,6 +346,10 @@ public class CompactionJobPriorityQueueTest { assertEquals(100, queue.getMaxSize()); queue.setMaxSize(50); assertEquals(50, queue.getMaxSize()); + assertThrows(IllegalArgumentException.class, () -> queue.setMaxSize(0)); + assertThrows(IllegalArgumentException.class, () -> queue.setMaxSize(-1)); + // Make sure previous value was not changed after invalid setting + assertEquals(50, queue.getMaxSize()); } }