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

dlmarion 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 c63a556e79 Modified Manager to wait for accumulo.fate table before 
starting Fate (#5645)
c63a556e79 is described below

commit c63a556e79fa8a236aac102af7fc1c3584f5886b
Author: Dave Marion <dlmar...@apache.org>
AuthorDate: Fri Jun 13 14:55:32 2025 -0400

    Modified Manager to wait for accumulo.fate table before starting Fate 
(#5645)
    
    Closes #5644
---
 .../main/java/org/apache/accumulo/manager/Manager.java    | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java 
b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
index bdf6507ed0..f16d83e0a9 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java
@@ -60,6 +60,7 @@ import java.util.stream.Collectors;
 
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.cli.ConfigOpts;
+import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.servers.ServerId;
 import org.apache.accumulo.core.client.admin.servers.ServerId.Type;
@@ -1333,6 +1334,20 @@ public class Manager extends AbstractServer implements 
LiveTServerSet.Listener {
           lock -> ServiceLock.isLockHeld(context.getZooCache(), lock);
       var metaInstance = initializeFateInstance(context,
           new MetaFateStore<>(context.getZooSession(), 
managerLock.getLockID(), isLockHeld));
+
+      // If an upgrade occurred, then it's possible that the client may not yet
+      // be aware of the table. Wait for the table to be known to prevent an
+      // error when creating the UserFateStore.
+      while (true) {
+        try {
+          context.getTableId(SystemTables.FATE.tableName());
+          break;
+        } catch (TableNotFoundException e) {
+          log.trace("Waiting for client to become aware of user fate table");
+          Thread.sleep(100);
+        }
+      }
+
       var userInstance = initializeFateInstance(context, new 
UserFateStore<>(context,
           SystemTables.FATE.tableName(), managerLock.getLockID(), isLockHeld));
 

Reply via email to