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 4ce7511748 allow allocating zero unique names (#5681)
4ce7511748 is described below

commit 4ce75117484bab14287a032802b7d0423d823e7d
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Mon Jun 30 10:42:29 2025 -0400

    allow allocating zero unique names (#5681)
    
    ImportExportIT.testImportedTableIsOnDemand was failing when its Fate
    operation tried to allocate zero unique names.  Allocating zero unique
    names is reasonable for cases like importing a table or tablet with zero
    files.  Relaxed the restriction to allow zero.
---
 .../org/apache/accumulo/server/tablets/UniqueNameAllocator.java   | 8 +++++++-
 .../main/java/org/apache/accumulo/test/UniqueNameAllocatorIT.java | 2 +-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
 
b/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
index a86286cce3..45f4bd16f6 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
@@ -21,6 +21,7 @@ package org.apache.accumulo.server.tablets;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.accumulo.core.util.LazySingletons.RANDOM;
 
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.NoSuchElementException;
 import java.util.concurrent.atomic.AtomicLong;
@@ -67,7 +68,12 @@ public class UniqueNameAllocator {
    * @return a thread safe iterator that can be called up to the number of 
names requested
    */
   public synchronized Iterator<String> getNextNames(int needed) {
-    Preconditions.checkArgument(needed > 0, "needed=%s is <=-0", needed);
+    Preconditions.checkArgument(needed >= 0, "needed=%s is <0", needed);
+
+    if (needed == 0) {
+      return Collections.emptyIterator();
+    }
+
     while ((next + needed) > maxAllocated) {
       final int allocate = getAllocation(needed);
       try {
diff --git 
a/test/src/main/java/org/apache/accumulo/test/UniqueNameAllocatorIT.java 
b/test/src/main/java/org/apache/accumulo/test/UniqueNameAllocatorIT.java
index 0f648f10af..58a56eed09 100644
--- a/test/src/main/java/org/apache/accumulo/test/UniqueNameAllocatorIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/UniqueNameAllocatorIT.java
@@ -105,7 +105,7 @@ class UniqueNameAllocatorIT extends SharedMiniClusterBase {
     }
 
     assertThrows(IllegalArgumentException.class, () -> 
allocators[0].getNextNames(-1));
-    assertThrows(IllegalArgumentException.class, () -> 
allocators[0].getNextNames(0));
+    assertFalse(allocators[0].getNextNames(0).hasNext());
 
     assertTrue(namesSeen.size() >= 1_000_000);
     assertTrue(namesSeen.stream().allMatch(name -> 
name.matches("[0-9a-z]{7}")));

Reply via email to