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());
   }
 
 }

Reply via email to