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 <[email protected]>
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());
}
}