From df0f3b644c355dce05fb9dd9dba03dde9c26a657 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Tue, 24 Feb 2026 22:16:48 +0000 Subject: [PATCH 1/2] Wrap fate thrift service with highly available service --- .../org/apache/accumulo/manager/Manager.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) 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 1bb15169914..587739055bc 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 @@ -81,7 +81,6 @@ import org.apache.accumulo.core.manager.balancer.TServerStatusImpl; import org.apache.accumulo.core.manager.balancer.TabletServerIdImpl; import org.apache.accumulo.core.manager.state.tables.TableState; -import org.apache.accumulo.core.manager.thrift.ManagerClientService; import org.apache.accumulo.core.manager.thrift.ManagerGoalState; import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo; import org.apache.accumulo.core.manager.thrift.ManagerState; @@ -1239,17 +1238,15 @@ public void run() { // ACCUMULO-4424 Put up the Thrift servers before getting the lock as a sign of process health // when a hot-standby // - // Start the Manager's Fate Service - fateServiceHandler = new FateServiceHandler(this); - managerClientHandler = new ManagerClientServiceHandler(this); - // Start the Manager's Client service - // Ensure that calls before the manager gets the lock fail - ManagerClientService.Iface haProxy = - HighlyAvailableServiceWrapper.service(managerClientHandler, this); + // Start the Manager's Fate Service. Ensure that calls before the manager gets the lock fail + fateServiceHandler = HighlyAvailableServiceWrapper.service(new FateServiceHandler(this), this); + // Start the Manager's Client service. Ensure that calls before the manager gets the lock fail + managerClientHandler = + HighlyAvailableServiceWrapper.service(new ManagerClientServiceHandler(this), this); ServerAddress sa; - var processor = - ThriftProcessorTypes.getManagerTProcessor(this, fateServiceHandler, haProxy, getContext()); + var processor = ThriftProcessorTypes.getManagerTProcessor(this, fateServiceHandler, + managerClientHandler, getContext()); try { @SuppressWarnings("deprecation") From 7065720905088d468132170e0e158d042b00bc34 Mon Sep 17 00:00:00 2001 From: Keith Turner Date: Wed, 25 Feb 2026 00:28:41 +0000 Subject: [PATCH 2/2] fixes bug --- .../main/java/org/apache/accumulo/manager/Manager.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 587739055bc..9d6fe3577aa 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 @@ -81,6 +81,8 @@ import org.apache.accumulo.core.manager.balancer.TServerStatusImpl; import org.apache.accumulo.core.manager.balancer.TabletServerIdImpl; import org.apache.accumulo.core.manager.state.tables.TableState; +import org.apache.accumulo.core.manager.thrift.FateService; +import org.apache.accumulo.core.manager.thrift.ManagerClientService; import org.apache.accumulo.core.manager.thrift.ManagerGoalState; import org.apache.accumulo.core.manager.thrift.ManagerMonitorInfo; import org.apache.accumulo.core.manager.thrift.ManagerState; @@ -325,9 +327,6 @@ synchronized void setManagerState(final ManagerState newState) { private Future upgradeMetadataFuture; - private FateServiceHandler fateServiceHandler; - private ManagerClientServiceHandler managerClientHandler; - private int assignedOrHosted(TableId tableId) { int result = 0; for (TabletGroupWatcher watcher : watchers) { @@ -1239,9 +1238,10 @@ public void run() { // when a hot-standby // // Start the Manager's Fate Service. Ensure that calls before the manager gets the lock fail - fateServiceHandler = HighlyAvailableServiceWrapper.service(new FateServiceHandler(this), this); + FateService.Iface fateServiceHandler = + HighlyAvailableServiceWrapper.service(new FateServiceHandler(this), this); // Start the Manager's Client service. Ensure that calls before the manager gets the lock fail - managerClientHandler = + ManagerClientService.Iface managerClientHandler = HighlyAvailableServiceWrapper.service(new ManagerClientServiceHandler(this), this); ServerAddress sa;