This is an automated email from the ASF dual-hosted git repository.

DomGarguilo 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 fa18f2bc44 Replace table name Pair with new record class (#6441)
fa18f2bc44 is described below

commit fa18f2bc44453733574551ac22bec5df77c6dba5
Author: Dom G. <[email protected]>
AuthorDate: Tue Jun 23 15:34:50 2026 -0400

    Replace table name Pair with new record class (#6441)
---
 .../accumulo/core/client/TableNotFoundException.java |  2 +-
 .../accumulo/core/clientImpl/ClientContext.java      |  6 +++---
 .../core/clientImpl/TableOperationsImpl.java         |  2 +-
 .../org/apache/accumulo/core/util/Validators.java    |  6 +++---
 .../accumulo/core/util/tables/TableMapping.java      |  6 +++---
 .../accumulo/core/util/tables/TableNameUtil.java     | 20 +++++++++++---------
 .../apache/accumulo/manager/FateServiceHandler.java  |  6 +++---
 .../manager/tableOps/rename/RenameTable.java         |  7 +++----
 .../accumulo/manager/upgrade/Upgrader11to12.java     |  5 ++---
 .../accumulo/shell/commands/ConfigCommand.java       |  2 +-
 .../accumulo/shell/commands/DeleteTableCommand.java  |  5 ++---
 .../accumulo/shell/commands/TablesCommand.java       |  4 ++--
 .../accumulo/test/NamespacesIT_SimpleSuite.java      |  2 +-
 13 files changed, 36 insertions(+), 37 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/TableNotFoundException.java
 
b/core/src/main/java/org/apache/accumulo/core/client/TableNotFoundException.java
index f56ed0face..56de38c781 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/client/TableNotFoundException.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/TableNotFoundException.java
@@ -70,7 +70,7 @@ public class TableNotFoundException extends Exception {
    */
   public TableNotFoundException(String tableName, NamespaceNotFoundException 
e) {
     this(null, tableName,
-        "Namespace " + TableNameUtil.qualify(tableName).getFirst() + " does 
not exist.", e);
+        "Namespace " + TableNameUtil.qualify(tableName).namespaceName() + " 
does not exist.", e);
   }
 
   /**
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
index 33a633af69..a6a880edbf 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ClientContext.java
@@ -599,14 +599,14 @@ public class ClientContext implements AccumuloClient {
    */
   public synchronized TableId getTableId(String tableName) throws 
TableNotFoundException {
     ensureOpen();
-    Pair<String,String> qualified = TableNameUtil.qualify(tableName);
+    var qualified = TableNameUtil.qualify(tableName);
     NamespaceId nid;
     try {
-      nid = getNamespaceId(qualified.getFirst());
+      nid = getNamespaceId(qualified.namespaceName());
     } catch (NamespaceNotFoundException e) {
       throw new TableNotFoundException(tableName, e);
     }
-    TableId tid = 
getTableMapping(nid).getNameToIdMap().get(qualified.getSecond());
+    TableId tid = 
getTableMapping(nid).getNameToIdMap().get(qualified.tableName());
     if (tid == null) {
       throw new TableNotFoundException(null, tableName,
           "No entry for this table found in the given namespace mapping");
diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
index f790c8f3f6..9b452556d5 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java
@@ -2265,7 +2265,7 @@ public class TableOperationsImpl extends 
TableOperationsHelper {
 
   @Override
   public String getNamespace(String table) {
-    return TableNameUtil.qualify(table).getFirst();
+    return TableNameUtil.qualify(table).namespaceName();
   }
 
 }
diff --git a/core/src/main/java/org/apache/accumulo/core/util/Validators.java 
b/core/src/main/java/org/apache/accumulo/core/util/Validators.java
index 990e518959..4938464d44 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/Validators.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/Validators.java
@@ -167,16 +167,16 @@ public class Validators {
   });
 
   public static final Validator<String> NOT_BUILTIN_TABLE = new Validator<>(t 
-> {
-    if (Namespace.ACCUMULO.name().equals(TableNameUtil.qualify(t).getFirst())) 
{
+    if 
(Namespace.ACCUMULO.name().equals(TableNameUtil.qualify(t).namespaceName())) {
       return Optional.of("Table must not be in the '" + 
Namespace.ACCUMULO.name() + "' namespace");
     }
     return Validator.OK;
   });
 
   public static Validator<String> sameNamespaceAs(String oldTableName) {
-    final String oldNamespace = TableNameUtil.qualify(oldTableName).getFirst();
+    final String oldNamespace = 
TableNameUtil.qualify(oldTableName).namespaceName();
     return new Validator<>(newName -> {
-      if (!oldNamespace.equals(TableNameUtil.qualify(newName).getFirst())) {
+      if 
(!oldNamespace.equals(TableNameUtil.qualify(newName).namespaceName())) {
         return Optional
             .of("Unable to move tables to a new namespace by renaming. The 
namespace for " + newName
                 + " does not match " + oldTableName);
diff --git 
a/core/src/main/java/org/apache/accumulo/core/util/tables/TableMapping.java 
b/core/src/main/java/org/apache/accumulo/core/util/tables/TableMapping.java
index 4d8d6a22e8..5fffbca258 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/tables/TableMapping.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/tables/TableMapping.java
@@ -65,7 +65,7 @@ public class TableMapping {
           "Putting built-in tables into the Accumulo namespace table map after 
init should not be possible");
     }
     requireNonNull(tableId);
-    var rawTableName = 
TableNameUtil.qualify(requireNonNull(tableName)).getSecond();
+    var rawTableName = 
TableNameUtil.qualify(requireNonNull(tableName)).tableName();
     requireNonNull(operation);
     context.getZooSession().asReaderWriter().mutateExisting(mappingPath, data 
-> {
       var tables = deserializeMap(data);
@@ -112,8 +112,8 @@ public class TableMapping {
           "Renaming built-in tables in the Accumulo namespace table map should 
not be possible");
     }
     requireNonNull(tableId);
-    var rawOldName = 
TableNameUtil.qualify(requireNonNull(oldName)).getSecond();
-    var rawNewName = 
TableNameUtil.qualify(requireNonNull(newName)).getSecond();
+    var rawOldName = 
TableNameUtil.qualify(requireNonNull(oldName)).tableName();
+    var rawNewName = 
TableNameUtil.qualify(requireNonNull(newName)).tableName();
     context.getZooSession().asReaderWriter().mutateExisting(mappingPath, data 
-> {
       var tables = deserializeMap(data);
       final String currentName = tables.get(tableId.canonical());
diff --git 
a/core/src/main/java/org/apache/accumulo/core/util/tables/TableNameUtil.java 
b/core/src/main/java/org/apache/accumulo/core/util/tables/TableNameUtil.java
index 55c7096644..ffb6f7c49e 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/tables/TableNameUtil.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/tables/TableNameUtil.java
@@ -21,35 +21,37 @@ package org.apache.accumulo.core.util.tables;
 import static org.apache.accumulo.core.util.Validators.EXISTING_TABLE_NAME;
 
 import org.apache.accumulo.core.clientImpl.Namespace;
-import org.apache.accumulo.core.util.Pair;
 
 public class TableNameUtil {
   // static utility only; don't allow instantiation
   private TableNameUtil() {}
 
+  public record QualifiedTableName(String namespaceName, String tableName) {
+  }
+
   public static String qualified(String tableName) {
     return qualified(tableName, Namespace.DEFAULT.name());
   }
 
   public static String qualified(String tableName, String defaultNamespace) {
-    Pair<String,String> qualifiedTableName = qualify(tableName, 
defaultNamespace);
-    if (Namespace.DEFAULT.name().equals(qualifiedTableName.getFirst())) {
-      return qualifiedTableName.getSecond();
+    QualifiedTableName qualifiedTableName = qualify(tableName, 
defaultNamespace);
+    if (Namespace.DEFAULT.name().equals(qualifiedTableName.namespaceName())) {
+      return qualifiedTableName.tableName();
     } else {
-      return qualifiedTableName.toString("", ".", "");
+      return qualifiedTableName.namespaceName() + "." + 
qualifiedTableName.tableName();
     }
   }
 
-  public static Pair<String,String> qualify(String tableName) {
+  public static QualifiedTableName qualify(String tableName) {
     return qualify(tableName, Namespace.DEFAULT.name());
   }
 
-  private static Pair<String,String> qualify(String tableName, String 
defaultNamespace) {
+  private static QualifiedTableName qualify(String tableName, String 
defaultNamespace) {
     EXISTING_TABLE_NAME.validate(tableName);
     if (tableName.contains(".")) {
       String[] s = tableName.split("\\.", 2);
-      return new Pair<>(s[0], s[1]);
+      return new QualifiedTableName(s[0], s[1]);
     }
-    return new Pair<>(defaultNamespace, tableName);
+    return new QualifiedTableName(defaultNamespace, tableName);
   }
 }
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/FateServiceHandler.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/FateServiceHandler.java
index 1f3632a4ee..28c681f474 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/FateServiceHandler.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/FateServiceHandler.java
@@ -229,7 +229,7 @@ class FateServiceHandler implements FateService.Iface {
           }
         }
         NamespaceId namespaceId = 
ClientServiceHandler.checkNamespaceId(manager.getContext(),
-            TableNameUtil.qualify(tableName).getFirst(), tableOp);
+            TableNameUtil.qualify(tableName).namespaceName(), tableOp);
 
         if (!security.canCreateTable(c, tableName, namespaceId)) {
           throw new ThriftSecurityException(c.getPrincipal(), 
SecurityErrorCode.PERMISSION_DENIED);
@@ -318,7 +318,7 @@ class FateServiceHandler implements FateService.Iface {
         }
 
         NamespaceId namespaceId = 
ClientServiceHandler.checkNamespaceId(manager.getContext(),
-            TableNameUtil.qualify(tableName).getFirst(), tableOp);
+            TableNameUtil.qualify(tableName).namespaceName(), tableOp);
 
         final boolean canCloneTable;
         try {
@@ -593,7 +593,7 @@ class FateServiceHandler implements FateService.Iface {
         List<ByteBuffer> exportDirArgs = 
arguments.stream().skip(3).collect(Collectors.toList());
         Set<String> exportDirs = ByteBufferUtil.toStringSet(exportDirArgs);
         NamespaceId namespaceId = 
ClientServiceHandler.checkNamespaceId(manager.getContext(),
-            TableNameUtil.qualify(tableName).getFirst(), tableOp);
+            TableNameUtil.qualify(tableName).namespaceName(), tableOp);
 
         final boolean canImport;
         try {
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java
index 1ba4034743..d0682d4369 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/rename/RenameTable.java
@@ -27,7 +27,6 @@ import org.apache.accumulo.core.data.TableId;
 import org.apache.accumulo.core.fate.FateId;
 import org.apache.accumulo.core.fate.Repo;
 import 
org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType;
-import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.tables.TableNameUtil;
 import org.apache.accumulo.manager.tableOps.AbstractFateOperation;
 import org.apache.accumulo.manager.tableOps.FateEnv;
@@ -62,13 +61,13 @@ public class RenameTable extends AbstractFateOperation {
 
   @Override
   public Repo<FateEnv> call(FateId fateId, FateEnv env) throws Exception {
-    Pair<String,String> qualifiedOldTableName = 
TableNameUtil.qualify(oldTableName);
+    var qualifiedOldTableName = TableNameUtil.qualify(oldTableName);
     // the namespace name was already checked before starting the fate 
operation
-    String newSimpleTableName = 
TableNameUtil.qualify(newTableName).getSecond();
+    String newSimpleTableName = 
TableNameUtil.qualify(newTableName).tableName();
     var context = env.getContext();
 
     try {
-      context.getTableMapping(namespaceId).rename(tableId, 
qualifiedOldTableName.getSecond(),
+      context.getTableMapping(namespaceId).rename(tableId, 
qualifiedOldTableName.tableName(),
           newSimpleTableName);
 
       context.clearTableListCache();
diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java
index d13ca3c016..29e1ac53cf 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java
@@ -79,7 +79,6 @@ import 
org.apache.accumulo.core.metadata.schema.TabletsMetadata;
 import org.apache.accumulo.core.schema.Section;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.Encoding;
-import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.TextUtil;
 import org.apache.accumulo.core.util.compaction.CompactionServicesConfig;
 import org.apache.accumulo.core.util.tables.TableNameUtil;
@@ -611,8 +610,8 @@ public class Upgrader11to12 implements Upgrader {
     // state gets created last
     LOG.debug("Creating ZooKeeper entries for new table {} (ID: {}) in 
namespace (ID: {})",
         tableName, tableId, namespaceId);
-    Pair<String,String> qualifiedTableName = TableNameUtil.qualify(tableName);
-    tableName = qualifiedTableName.getSecond();
+    var qualifiedTableName = TableNameUtil.qualify(tableName);
+    tableName = qualifiedTableName.tableName();
     String zTablePath = Constants.ZTABLES + "/" + tableId;
     final ZooReaderWriter zoo = context.getZooSession().asReaderWriter();
     zoo.putPersistentData(zTablePath, new byte[0], existsPolicy);
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java
index 5fce079078..27b901702a 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java
@@ -266,7 +266,7 @@ public class ConfigCommand extends Command {
 
       final TreeMap<String,String> namespaceConfig = new TreeMap<>();
       if (tableName != null) {
-        String n = TableNameUtil.qualify(tableName).getFirst();
+        String n = TableNameUtil.qualify(tableName).namespaceName();
         try {
           namespaceConfig
               
.putAll(shellState.getAccumuloClient().namespaceOperations().getConfiguration(n));
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteTableCommand.java
 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteTableCommand.java
index 7d0c90af36..6f5a7f96b3 100644
--- 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteTableCommand.java
+++ 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteTableCommand.java
@@ -22,7 +22,6 @@ import java.util.Iterator;
 import java.util.Set;
 
 import org.apache.accumulo.core.clientImpl.Namespace;
-import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.util.tables.TableNameUtil;
 import org.apache.accumulo.shell.Shell;
 import org.apache.commons.cli.CommandLine;
@@ -73,8 +72,8 @@ public class DeleteTableCommand extends TableOperation {
     Iterator<String> tableNames = tables.iterator();
     while (tableNames.hasNext()) {
       String table = tableNames.next();
-      Pair<String,String> qualifiedName = TableNameUtil.qualify(table);
-      if (Namespace.ACCUMULO.name().equals(qualifiedName.getFirst())) {
+      var qualifiedName = TableNameUtil.qualify(table);
+      if (Namespace.ACCUMULO.name().equals(qualifiedName.namespaceName())) {
         Shell.log.trace("Removing table from deletion set: {}", table);
         tableNames.remove();
       }
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/TablesCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/TablesCommand.java
index b7dd0acf72..733d2ae0e4 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/TablesCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/TablesCommand.java
@@ -54,7 +54,7 @@ public class TablesCommand extends Command {
 
     // filter only specified namespace
     tables = Maps.filterKeys(tables, tableName -> namespace == null
-        || TableNameUtil.qualify(tableName).getFirst().equals(namespace));
+        || TableNameUtil.qualify(tableName).namespaceName().equals(namespace));
 
     final boolean sortByTableId = cl.hasOption(sortByTableIdOption.getOpt());
     tables = new TreeMap<>((sortByTableId ? MapUtils.invertMap(tables) : 
tables));
@@ -63,7 +63,7 @@ public class TablesCommand extends Command {
       String tableName = String.valueOf(sortByTableId ? entry.getValue() : 
entry.getKey());
       String tableId = String.valueOf(sortByTableId ? entry.getKey() : 
entry.getValue());
       if (namespace != null) {
-        tableName = TableNameUtil.qualify(tableName).getSecond();
+        tableName = TableNameUtil.qualify(tableName).tableName();
       }
       if (cl.hasOption(tableIdOption.getOpt())) {
         return String.format(NAME_AND_ID_FORMAT, tableName, tableId);
diff --git 
a/test/src/main/java/org/apache/accumulo/test/NamespacesIT_SimpleSuite.java 
b/test/src/main/java/org/apache/accumulo/test/NamespacesIT_SimpleSuite.java
index 9a86c28071..07c41de472 100644
--- a/test/src/main/java/org/apache/accumulo/test/NamespacesIT_SimpleSuite.java
+++ b/test/src/main/java/org/apache/accumulo/test/NamespacesIT_SimpleSuite.java
@@ -130,7 +130,7 @@ public class NamespacesIT_SimpleSuite extends 
SharedMiniClusterBase {
     }
     // clean up any added tables, namespaces, and users, after each test
     for (String t : c.tableOperations().list()) {
-      if 
(!TableNameUtil.qualify(t).getFirst().equals(Namespace.ACCUMULO.name())) {
+      if 
(!TableNameUtil.qualify(t).namespaceName().equals(Namespace.ACCUMULO.name())) {
         c.tableOperations().delete(t);
       }
     }

Reply via email to