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

kturner pushed a commit to branch elasticity
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/elasticity by this push:
     new 6e73d0dc3e Update places where one fate store is used when both should 
be (#4696)
6e73d0dc3e is described below

commit 6e73d0dc3e1fb7d80492d219546490c5afe08e29
Author: Kevin Rathbun <43969518+kevinrr...@users.noreply.github.com>
AuthorDate: Tue Jun 25 18:27:02 2024 -0400

    Update places where one fate store is used when both should be (#4696)
    
    - UpgradeCoordinator.abortIfFateTransactions now uses both stores
    - FunctionalTestUtils.getFateStatus() now uses both stores. As this method 
is currently only used in assertNoDanglingFateLocks, technically only the 
MetaFateStore is needed, but based on the method name and if it is used for 
other purposes in the future, both stores should be used.
---
 .../apache/accumulo/manager/upgrade/UpgradeCoordinator.java    |  8 ++++++--
 .../org/apache/accumulo/test/functional/FateConcurrencyIT.java |  8 ++++----
 .../apache/accumulo/test/functional/FunctionalTestUtils.java   | 10 ++++++++--
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
index 22fe50c0c9..46d29516c2 100644
--- 
a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
+++ 
b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/UpgradeCoordinator.java
@@ -31,6 +31,7 @@ import java.util.TreeMap;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Future;
 import java.util.concurrent.SynchronousQueue;
+import java.util.stream.Stream;
 
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.AccumuloException;
@@ -40,6 +41,7 @@ import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.conf.ConfigCheckUtil;
 import org.apache.accumulo.core.fate.MetaFateStore;
 import org.apache.accumulo.core.fate.ReadOnlyFateStore;
+import org.apache.accumulo.core.fate.user.UserFateStore;
 import org.apache.accumulo.core.metadata.schema.Ample;
 import org.apache.accumulo.core.util.threads.ThreadPools;
 import org.apache.accumulo.core.volume.Volume;
@@ -307,9 +309,11 @@ public class UpgradeCoordinator {
       justification = "Want to immediately stop all manager threads on upgrade 
error")
   private void abortIfFateTransactions(ServerContext context) {
     try {
-      final ReadOnlyFateStore<UpgradeCoordinator> fate = new MetaFateStore<>(
+      final ReadOnlyFateStore<UpgradeCoordinator> mfs = new MetaFateStore<>(
           context.getZooKeeperRoot() + Constants.ZFATE, 
context.getZooReaderWriter());
-      try (var idStream = fate.list()) {
+      final ReadOnlyFateStore<UpgradeCoordinator> ufs = new 
UserFateStore<>(context);
+      try (var mfsList = mfs.list(); var ufsList = ufs.list();
+          var idStream = Stream.concat(mfsList, ufsList)) {
         if (idStream.findFirst().isPresent()) {
           throw new AccumuloException("Aborting upgrade because there are"
               + " outstanding FATE transactions from a previous Accumulo 
version."
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java 
b/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
index 5f05b0b64e..f0c38fe374 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java
@@ -262,13 +262,13 @@ public class FateConcurrencyIT extends 
AccumuloClusterHarness {
 
         InstanceId instanceId = context.getInstanceID();
         ZooReaderWriter zk = context.getZooReader().asWriter(secret);
-        MetaFateStore<String> zs =
+        MetaFateStore<String> mfs =
             new MetaFateStore<>(ZooUtil.getRoot(instanceId) + Constants.ZFATE, 
zk);
         var lockPath =
             ServiceLock.path(ZooUtil.getRoot(instanceId) + 
Constants.ZTABLE_LOCKS + "/" + tableId);
         UserFateStore<String> ufs = new UserFateStore<>(context);
         Map<FateInstanceType,ReadOnlyFateStore<String>> fateStores =
-            Map.of(FateInstanceType.META, zs, FateInstanceType.USER, ufs);
+            Map.of(FateInstanceType.META, mfs, FateInstanceType.USER, ufs);
 
         withLocks = admin.getStatus(fateStores, zk, lockPath, null, null, 
null);
 
@@ -356,11 +356,11 @@ public class FateConcurrencyIT extends 
AccumuloClusterHarness {
 
       InstanceId instanceId = context.getInstanceID();
       ZooReaderWriter zk = context.getZooReader().asWriter(secret);
-      MetaFateStore<String> zs =
+      MetaFateStore<String> mfs =
           new MetaFateStore<>(ZooUtil.getRoot(instanceId) + Constants.ZFATE, 
zk);
       var lockPath =
           ServiceLock.path(ZooUtil.getRoot(instanceId) + 
Constants.ZTABLE_LOCKS + "/" + tableId);
-      AdminUtil.FateStatus fateStatus = admin.getStatus(zs, zk, lockPath, 
null, null, null);
+      AdminUtil.FateStatus fateStatus = admin.getStatus(mfs, zk, lockPath, 
null, null, null);
 
       log.trace("current fates: {}", fateStatus.getTransactions().size());
 
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
 
b/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
index 6d80cf5be0..b81a23c808 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/FunctionalTestUtils.java
@@ -60,7 +60,10 @@ import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
 import org.apache.accumulo.core.fate.AdminUtil;
 import org.apache.accumulo.core.fate.AdminUtil.FateStatus;
+import org.apache.accumulo.core.fate.FateInstanceType;
 import org.apache.accumulo.core.fate.MetaFateStore;
+import org.apache.accumulo.core.fate.ReadOnlyFateStore;
+import org.apache.accumulo.core.fate.user.UserFateStore;
 import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
 import org.apache.accumulo.core.lock.ServiceLock;
 import org.apache.accumulo.core.metadata.AccumuloTable;
@@ -231,10 +234,13 @@ public class FunctionalTestUtils {
       AdminUtil<String> admin = new AdminUtil<>(false);
       ServerContext context = cluster.getServerContext();
       ZooReaderWriter zk = context.getZooReaderWriter();
-      MetaFateStore<String> zs =
+      MetaFateStore<String> mfs =
           new MetaFateStore<>(context.getZooKeeperRoot() + Constants.ZFATE, 
zk);
+      UserFateStore<String> ufs = new UserFateStore<>(context);
+      Map<FateInstanceType,ReadOnlyFateStore<String>> fateStores =
+          Map.of(FateInstanceType.META, mfs, FateInstanceType.USER, ufs);
       var lockPath = ServiceLock.path(context.getZooKeeperRoot() + 
Constants.ZTABLE_LOCKS);
-      return admin.getStatus(zs, zk, lockPath, null, null, null);
+      return admin.getStatus(fateStores, zk, lockPath, null, null, null);
     } catch (KeeperException | InterruptedException e) {
       throw new RuntimeException(e);
     }

Reply via email to