This is an automated email from the ASF dual-hosted git repository.
ctubbsii pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new dd2d40ff41 Use util code to identify root ZooKeeper path (#5120)
dd2d40ff41 is described below
commit dd2d40ff4171221daf540e0f78bd6e56f878fc06
Author: Christopher Tubbs <[email protected]>
AuthorDate: Wed Nov 27 22:57:21 2024 -0500
Use util code to identify root ZooKeeper path (#5120)
Avoid direct use of `Constants.ZROOT + "/" + instanceId` and use the
existing `ZooUtil.getRoot(instanceId)` that was made for this purpose
instead wherever possible. If a ServerContext is available, use
`context.getZooKeeperRoot()` instead.
* Use ZooUtil.getRoot() or ServerContext.getZooKeeperRoot()
* Use Constants where not currently being used
* Remove redundant ZKSecurityTool.getInstancePath
* Remove redundant Manager methods that passthrough to ServerContext
* Update related tests
* Fix use of EasyMock in modified tests: RootTabletLocatorTest and
ZookeeperLockCheckerTest
* Avoid hard-coded "/accumulo/" in hdfs paths in some ITs that were
false-positive potential uses of Constants.ZROOT when I was looking
for possibility of replacing literals with constants. For these
false-positives, retrieve the actual path from the
MiniAccumuloConfig's "instance.volumes" property value, rather than
make assumptions about the layout of MiniAccumuloCluster's setup.
---
.../accumulo/core/clientImpl/ClientContext.java | 3 +-
.../core/clientImpl/RootTabletLocatorTest.java | 29 ++++++++++---
.../core/clientImpl/ZookeeperLockCheckerTest.java | 29 ++++++++++---
.../MiniAccumuloClusterExistingZooKeepersTest.java | 7 +++-
.../org/apache/accumulo/server/ServerContext.java | 3 +-
.../org/apache/accumulo/server/ServerInfo.java | 3 +-
.../accumulo/server/init/ZooKeeperInitializer.java | 4 +-
.../server/security/handler/ZKPermHandler.java | 7 ++--
.../server/security/handler/ZKSecurityTool.java | 5 ---
.../accumulo/server/tables/TableManager.java | 11 ++---
.../server/tablets/UniqueNameAllocator.java | 2 +-
.../apache/accumulo/server/util/ChangeSecret.java | 5 ++-
.../apache/accumulo/server/util/ListInstances.java | 4 +-
.../apache/accumulo/server/util/ZooKeeperMain.java | 2 +-
.../org/apache/accumulo/server/util/ZooZap.java | 11 ++---
.../apache/accumulo/server/MockServerContext.java | 8 ++--
.../conf/ServerConfigurationFactoryTest.java | 3 +-
.../server/conf/store/PropStoreKeyTest.java | 46 ++++++++++-----------
.../server/conf/store/impl/PropStoreEventTest.java | 3 +-
.../server/conf/store/impl/ZooPropStoreTest.java | 3 +-
.../ZooAuthenticationKeyWatcherTest.java | 3 +-
.../security/handler/ZKAuthenticatorTest.java | 13 +++---
.../org/apache/accumulo/server/util/AdminTest.java | 47 +++++++++++++---------
.../accumulo/server/util/ServiceStatusCmdTest.java | 3 +-
.../org/apache/accumulo/compactor/Compactor.java | 4 +-
.../java/org/apache/accumulo/manager/Manager.java | 38 +++++++----------
.../manager/ManagerClientServiceHandler.java | 4 +-
.../org/apache/accumulo/manager/ManagerTime.java | 2 +-
.../accumulo/manager/recovery/RecoveryManager.java | 12 +++---
.../apache/accumulo/manager/state/MergeStats.java | 5 +--
.../manager/tableOps/compact/CompactRange.java | 8 ++--
.../manager/tableOps/compact/CompactionDriver.java | 8 ++--
.../tableOps/compact/cancel/CancelCompactions.java | 6 +--
.../manager/tableOps/delete/PreDeleteTable.java | 6 ++-
.../create/PopulateZookeeperWithNamespace.java | 4 +-
.../tableOps/namespace/rename/RenameNamespace.java | 4 +-
.../manager/tableOps/rename/RenameTable.java | 4 +-
.../manager/tserverOps/ShutdownTServer.java | 7 ++--
.../accumulo/manager/upgrade/Upgrader11to12.java | 2 +-
.../tableOps/compact/CompactionDriverTest.java | 43 +++++++++++---------
.../manager/upgrade/Upgrader11to12Test.java | 47 ++++++++++------------
.../org/apache/accumulo/tserver/tablet/Tablet.java | 12 +++---
.../org/apache/accumulo/test/ExistingMacIT.java | 4 +-
.../org/apache/accumulo/test/ImportExportIT.java | 7 +++-
.../ThriftServerBindsBeforeZooKeeperLockIT.java | 7 +---
.../org/apache/accumulo/test/VolumeManagerIT.java | 16 ++++++--
.../accumulo/test/fate/zookeeper/FateIT.java | 5 ++-
.../accumulo/test/fate/zookeeper/ZooMutatorIT.java | 4 +-
.../accumulo/test/functional/BackupManagerIT.java | 2 +-
.../accumulo/test/functional/CloneTestIT.java | 11 +++--
.../test/functional/GarbageCollectorIT.java | 4 +-
.../apache/accumulo/test/functional/TableIT.java | 10 +++--
.../apache/accumulo/test/lock/ServiceLockIT.java | 3 +-
53 files changed, 306 insertions(+), 237 deletions(-)
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 298a14329d..67fec0bfbc 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
@@ -510,8 +510,7 @@ public class ClientContext implements AccumuloClient {
*/
public List<String> getManagerLocations() {
ensureOpen();
- var zLockManagerPath =
- ServiceLock.path(Constants.ZROOT + "/" + getInstanceID() +
Constants.ZMANAGER_LOCK);
+ var zLockManagerPath = ServiceLock.path(getZooKeeperRoot() +
Constants.ZMANAGER_LOCK);
Timer timer = null;
diff --git
a/core/src/test/java/org/apache/accumulo/core/clientImpl/RootTabletLocatorTest.java
b/core/src/test/java/org/apache/accumulo/core/clientImpl/RootTabletLocatorTest.java
index 64f497d030..0fa52ec2c0 100644
---
a/core/src/test/java/org/apache/accumulo/core/clientImpl/RootTabletLocatorTest.java
+++
b/core/src/test/java/org/apache/accumulo/core/clientImpl/RootTabletLocatorTest.java
@@ -20,37 +20,54 @@ package org.apache.accumulo.core.clientImpl;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.verify;
+import java.util.UUID;
+
import org.apache.accumulo.core.Constants;
import
org.apache.accumulo.core.clientImpl.TabletLocatorImpl.TabletServerLockChecker;
+import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class RootTabletLocatorTest {
+
private ClientContext context;
private TabletServerLockChecker lockChecker;
private ZooCache zc;
- private RootTabletLocator rtl;
@BeforeEach
public void setUp() {
- context = createMock(ClientContext.class);
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/iid").anyTimes();
+ var instanceId = InstanceId.of(UUID.randomUUID());
zc = createMock(ZooCache.class);
+ context = createMock(ClientContext.class);
+
expect(context.getZooKeeperRoot()).andReturn(ZooUtil.getRoot(instanceId)).anyTimes();
expect(context.getZooCache()).andReturn(zc).anyTimes();
- replay(context);
lockChecker = createMock(TabletServerLockChecker.class);
- rtl = new RootTabletLocator(lockChecker);
+ replay(context, zc, lockChecker);
+ }
+
+ @AfterEach
+ public void tearDown() {
+ verify(context, zc, lockChecker);
}
@Test
public void testInvalidateCache_Server() {
+ var rtl = new RootTabletLocator(lockChecker);
+
+ verify(zc);
+ reset(zc);
zc.clear(context.getZooKeeperRoot() + Constants.ZTSERVERS + "/server");
+ expectLastCall().once();
replay(zc);
+
rtl.invalidateCache(context, "server");
- verify(zc);
}
}
diff --git
a/core/src/test/java/org/apache/accumulo/core/clientImpl/ZookeeperLockCheckerTest.java
b/core/src/test/java/org/apache/accumulo/core/clientImpl/ZookeeperLockCheckerTest.java
index 7776a55aa1..991e4d2dba 100644
---
a/core/src/test/java/org/apache/accumulo/core/clientImpl/ZookeeperLockCheckerTest.java
+++
b/core/src/test/java/org/apache/accumulo/core/clientImpl/ZookeeperLockCheckerTest.java
@@ -20,34 +20,51 @@ package org.apache.accumulo.core.clientImpl;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.verify;
+import java.util.UUID;
+
import org.apache.accumulo.core.Constants;
+import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class ZookeeperLockCheckerTest {
+
private ClientContext context;
private ZooCache zc;
- private ZookeeperLockChecker zklc;
@BeforeEach
public void setUp() {
- context = createMock(ClientContext.class);
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/iid").anyTimes();
+ var instanceId = InstanceId.of(UUID.randomUUID());
zc = createMock(ZooCache.class);
+ context = createMock(ClientContext.class);
+
expect(context.getZooKeeperRoot()).andReturn(ZooUtil.getRoot(instanceId)).anyTimes();
expect(context.getZooCache()).andReturn(zc).anyTimes();
- replay(context);
- zklc = new ZookeeperLockChecker(context);
+ replay(context, zc);
+ }
+
+ @AfterEach
+ public void tearDown() {
+ verify(context, zc);
}
@Test
public void testInvalidateCache() {
+ var zklc = new ZookeeperLockChecker(context);
+
+ verify(zc);
+ reset(zc);
zc.clear(context.getZooKeeperRoot() + Constants.ZTSERVERS + "/server");
+ expectLastCall().once();
replay(zc);
+
zklc.invalidateCache("server");
- verify(zc);
}
}
diff --git
a/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterExistingZooKeepersTest.java
b/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterExistingZooKeepersTest.java
index c428127b58..575588993f 100644
---
a/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterExistingZooKeepersTest.java
+++
b/minicluster/src/test/java/org/apache/accumulo/minicluster/MiniAccumuloClusterExistingZooKeepersTest.java
@@ -26,8 +26,10 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.util.Map;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.commons.io.FileUtils;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
@@ -74,8 +76,9 @@ public class MiniAccumuloClusterExistingZooKeepersTest
extends WithTestNames {
Map<String,String> tableIds = client.tableOperations().tableIdMap();
assertTrue(tableIds.containsKey(tableName));
- String zkTablePath = String.format("/accumulo/%s/tables/%s/name",
- client.instanceOperations().getInstanceId().canonical(),
tableIds.get(tableName));
+ String zkTablePath = String.format("%s%s/%s/name",
+ ZooUtil.getRoot(client.instanceOperations().getInstanceId()),
Constants.ZTABLES,
+ tableIds.get(tableName));
try (CuratorFramework curatorClient =
CuratorFrameworkFactory.newClient(zooKeeper.getConnectString(),
new RetryOneTime(1))) {
curatorClient.start();
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
b/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
index bf75821828..a20b5c62bb 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
@@ -52,6 +52,7 @@ import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.zookeeper.ZooReader;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.metadata.schema.Ample;
import org.apache.accumulo.core.metrics.MetricsInfo;
import org.apache.accumulo.core.rpc.SslConnectionParams;
@@ -118,7 +119,7 @@ public class ServerContext extends ClientContext {
serverDirs = info.getServerDirs();
propStore = memoize(() -> ZooPropStore.initialize(getInstanceID(),
getZooReaderWriter()));
- zkUserPath = memoize(() -> Constants.ZROOT + "/" + getInstanceID() +
Constants.ZUSERS);
+ zkUserPath = memoize(() -> ZooUtil.getRoot(getInstanceID()) +
Constants.ZUSERS);
tableManager = memoize(() -> new TableManager(this));
nameAllocator = memoize(() -> new UniqueNameAllocator(this));
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/ServerInfo.java
b/server/base/src/main/java/org/apache/accumulo/server/ServerInfo.java
index f0fd0c8394..aa7d2149dd 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/ServerInfo.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/ServerInfo.java
@@ -36,6 +36,7 @@ import org.apache.accumulo.core.conf.SiteConfiguration;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
import org.apache.accumulo.core.fate.zookeeper.ZooCacheFactory;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.singletons.SingletonManager;
import org.apache.accumulo.core.singletons.SingletonManager.Mode;
import org.apache.accumulo.server.fs.VolumeManager;
@@ -79,7 +80,7 @@ public class ServerInfo implements ClientInfo {
+ "Run \"accumulo
org.apache.accumulo.server.util.ListInstances\" to see a list.");
}
instanceID = InstanceId.of(new String(iidb, UTF_8));
- if (zooCache.get(Constants.ZROOT + "/" + instanceID) == null) {
+ if (zooCache.get(ZooUtil.getRoot(instanceID)) == null) {
if (instanceName == null) {
throw new IllegalStateException(
"Instance id " + instanceID + " does not exist in zookeeper");
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java
b/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java
index 1fc771dc09..8a78f6c254 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java
@@ -71,7 +71,7 @@ public class ZooKeeperInitializer {
zoo.putPersistentData(Constants.ZROOT, new byte[0],
ZooUtil.NodeExistsPolicy.SKIP,
ZooDefs.Ids.OPEN_ACL_UNSAFE);
- String zkInstanceRoot = Constants.ZROOT + "/" + instanceId;
+ String zkInstanceRoot = ZooUtil.getRoot(instanceId);
zoo.putPersistentData(zkInstanceRoot, EMPTY_BYTE_ARRAY,
ZooUtil.NodeExistsPolicy.SKIP);
var sysPropPath = SystemPropKey.of(instanceId).getPath();
VersionedProperties vProps = new VersionedProperties();
@@ -109,7 +109,7 @@ public class ZooKeeperInitializer {
ZooUtil.NodeExistsPolicy.FAIL);
// setup the instance
- String zkInstanceRoot = Constants.ZROOT + "/" + instanceId;
+ String zkInstanceRoot = context.getZooKeeperRoot();
zoo.putPersistentData(zkInstanceRoot + Constants.ZTABLES,
Constants.ZTABLES_INITIAL_ID,
ZooUtil.NodeExistsPolicy.FAIL);
zoo.putPersistentData(zkInstanceRoot + Constants.ZNAMESPACES,
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKPermHandler.java
b/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKPermHandler.java
index 750c7d15f9..f5b3768a85 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKPermHandler.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKPermHandler.java
@@ -27,12 +27,12 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeSet;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.NamespaceNotFoundException;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.clientImpl.Namespace;
import org.apache.accumulo.core.clientImpl.thrift.SecurityErrorCode;
-import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
@@ -66,10 +66,9 @@ public class ZKPermHandler implements PermissionHandler {
public void initialize(ServerContext context) {
zooCache = new ZooCache(context.getZooReader(), null);
zoo = context.getZooReaderWriter();
- InstanceId instanceId = context.getInstanceID();
zkUserPath = context.zkUserPath();
- ZKTablePath = ZKSecurityTool.getInstancePath(instanceId) + "/tables";
- ZKNamespacePath = ZKSecurityTool.getInstancePath(instanceId) +
"/namespaces";
+ ZKTablePath = context.getZooKeeperRoot() + Constants.ZTABLES;
+ ZKNamespacePath = context.getZooKeeperRoot() + Constants.ZNAMESPACES;
}
@Override
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKSecurityTool.java
b/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKSecurityTool.java
index af554f06f2..ecbb1cd31b 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKSecurityTool.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/security/handler/ZKSecurityTool.java
@@ -31,9 +31,7 @@ import java.time.Duration;
import java.util.HashSet;
import java.util.Set;
-import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.security.NamespacePermission;
import org.apache.accumulo.core.security.SystemPermission;
@@ -191,7 +189,4 @@ class ZKSecurityTool {
return toReturn;
}
- public static String getInstancePath(InstanceId instanceId) {
- return Constants.ZROOT + "/" + instanceId;
- }
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
index 15ce8d5941..bd8f74e6f0 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
@@ -37,6 +37,7 @@ import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy;
import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeMissingPolicy;
import org.apache.accumulo.core.manager.state.tables.TableState;
@@ -77,7 +78,7 @@ public class TableManager {
final InstanceId instanceId = context.getInstanceID();
log.debug("Creating ZooKeeper entries for new namespace {} (ID: {})",
namespace, namespaceId);
context.getZooReaderWriter().putPersistentData(
- Constants.ZROOT + "/" + instanceId + Constants.ZNAMESPACES + "/" +
namespaceId, new byte[0],
+ context.getZooKeeperRoot() + Constants.ZNAMESPACES + "/" +
namespaceId, new byte[0],
existsPolicy);
var propKey = NamespacePropKey.of(instanceId, namespaceId);
if (!propStore.exists(propKey)) {
@@ -94,7 +95,7 @@ public class TableManager {
tableName, tableId, namespaceId);
Pair<String,String> qualifiedTableName = TableNameUtil.qualify(tableName);
tableName = qualifiedTableName.getSecond();
- String zTablePath = Constants.ZROOT + "/" + instanceId + Constants.ZTABLES
+ "/" + tableId;
+ String zTablePath = ZooUtil.getRoot(instanceId) + Constants.ZTABLES + "/"
+ tableId;
zoo.putPersistentData(zTablePath, new byte[0], existsPolicy);
zoo.putPersistentData(zTablePath + Constants.ZTABLE_NAMESPACE,
namespaceId.canonical().getBytes(UTF_8), existsPolicy);
@@ -220,10 +221,10 @@ public class TableManager {
prepareNewTableState(zoo, context.getPropStore(), instanceID, tableId,
namespaceId, tableName,
TableState.NEW, NodeExistsPolicy.OVERWRITE);
- String srcTablePath = Constants.ZROOT + "/" + instanceID +
Constants.ZTABLES + "/" + srcTableId
- + Constants.ZCONFIG;
+ String srcTablePath =
+ context.getZooKeeperRoot() + Constants.ZTABLES + "/" + srcTableId +
Constants.ZCONFIG;
String newTablePath =
- Constants.ZROOT + "/" + instanceID + Constants.ZTABLES + "/" + tableId
+ Constants.ZCONFIG;
+ context.getZooKeeperRoot() + Constants.ZTABLES + "/" + tableId +
Constants.ZCONFIG;
zoo.recursiveCopyPersistentOverwrite(srcTablePath, newTablePath);
PropUtil.setProperties(context, TablePropKey.of(context, tableId),
propertiesToSet);
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 14026124df..7aead5026e 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
@@ -50,7 +50,7 @@ public class UniqueNameAllocator {
public UniqueNameAllocator(ServerContext context) {
this.context = context;
- nextNamePath = Constants.ZROOT + "/" + context.getInstanceID() +
Constants.ZNEXT_FILE;
+ nextNamePath = context.getZooKeeperRoot() + Constants.ZNEXT_FILE;
}
public synchronized String getNextName() {
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java
b/server/base/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java
index 094167e0ce..5a794c3eeb 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java
@@ -26,6 +26,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.UUID;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReader;
@@ -145,7 +146,7 @@ public class ChangeSecret {
}
}
});
- String path = "/accumulo/instances/" + context.getInstanceName();
+ String path = Constants.ZROOT + Constants.ZINSTANCES + "/" +
context.getInstanceName();
orig.recursiveDelete(path, NodeMissingPolicy.SKIP);
new_.putPersistentData(path, newInstanceId.canonical().getBytes(UTF_8),
NodeExistsPolicy.OVERWRITE);
@@ -201,6 +202,6 @@ public class ChangeSecret {
private static void deleteInstance(ServerContext context, String oldPass)
throws Exception {
ZooReaderWriter orig = context.getZooReader().asWriter(oldPass);
- orig.recursiveDelete("/accumulo/" + context.getInstanceID(),
NodeMissingPolicy.SKIP);
+ orig.recursiveDelete(context.getZooKeeperRoot(), NodeMissingPolicy.SKIP);
}
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/ListInstances.java
b/server/base/src/main/java/org/apache/accumulo/server/util/ListInstances.java
index 275e11e5a0..24e7b218b7 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/ListInstances.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/ListInstances.java
@@ -35,6 +35,7 @@ import org.apache.accumulo.core.conf.SiteConfiguration;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
import org.apache.accumulo.core.fate.zookeeper.ZooReader;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.lock.ServiceLock;
import org.apache.accumulo.core.lock.ServiceLockData;
import org.apache.accumulo.core.lock.ServiceLockData.ThriftService;
@@ -165,8 +166,7 @@ public class ListInstances {
}
try {
- var zLockManagerPath =
- ServiceLock.path(Constants.ZROOT + "/" + iid +
Constants.ZMANAGER_LOCK);
+ var zLockManagerPath = ServiceLock.path(ZooUtil.getRoot(iid) +
Constants.ZMANAGER_LOCK);
Optional<ServiceLockData> sld = ServiceLock.getLockData(cache,
zLockManagerPath, null);
if (sld.isEmpty()) {
return null;
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
b/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
index b98ef90b34..b7cb4d5732 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/ZooKeeperMain.java
@@ -69,7 +69,7 @@ public class ZooKeeperMain implements KeywordExecutable {
}
System.out.println("The accumulo instance id is " +
context.getInstanceID());
if (!opts.servers.contains("/")) {
- opts.servers += "/accumulo/" + context.getInstanceID();
+ opts.servers += context.getZooKeeperRoot();
}
org.apache.zookeeper.ZooKeeperMain
.main(new String[] {"-server", opts.servers, "-timeout", "" +
(opts.timeout * 1000)});
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
b/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
index 3a2b617984..87c1eacf0e 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java
@@ -26,6 +26,7 @@ import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.conf.SiteConfiguration;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeMissingPolicy;
import org.apache.accumulo.core.lock.ServiceLock;
import org.apache.accumulo.core.singletons.SingletonManager;
@@ -107,7 +108,7 @@ public class ZooZap implements KeywordExecutable {
ZooReaderWriter zoo = new ZooReaderWriter(siteConf);
if (opts.zapManager) {
- String managerLockPath = Constants.ZROOT + "/" + iid +
Constants.ZMANAGER_LOCK;
+ String managerLockPath = ZooUtil.getRoot(iid) +
Constants.ZMANAGER_LOCK;
try {
zapDirectory(zoo, managerLockPath, opts);
@@ -117,7 +118,7 @@ public class ZooZap implements KeywordExecutable {
}
if (opts.zapTservers) {
- String tserversPath = Constants.ZROOT + "/" + iid +
Constants.ZTSERVERS;
+ String tserversPath = ZooUtil.getRoot(iid) + Constants.ZTSERVERS;
try {
List<String> children = zoo.getChildren(tserversPath);
for (String child : children) {
@@ -140,7 +141,7 @@ public class ZooZap implements KeywordExecutable {
}
if (opts.zapCoordinators) {
- final String coordinatorPath = Constants.ZROOT + "/" + iid +
Constants.ZCOORDINATOR_LOCK;
+ final String coordinatorPath = ZooUtil.getRoot(iid) +
Constants.ZCOORDINATOR_LOCK;
try {
if (zoo.exists(coordinatorPath)) {
zapDirectory(zoo, coordinatorPath, opts);
@@ -151,7 +152,7 @@ public class ZooZap implements KeywordExecutable {
}
if (opts.zapCompactors) {
- String compactorsBasepath = Constants.ZROOT + "/" + iid +
Constants.ZCOMPACTORS;
+ String compactorsBasepath = ZooUtil.getRoot(iid) +
Constants.ZCOMPACTORS;
try {
if (zoo.exists(compactorsBasepath)) {
List<String> queues = zoo.getChildren(compactorsBasepath);
@@ -167,7 +168,7 @@ public class ZooZap implements KeywordExecutable {
}
if (opts.zapScanServers) {
- String sserversPath = Constants.ZROOT + "/" + iid +
Constants.ZSSERVERS;
+ String sserversPath = ZooUtil.getRoot(iid) + Constants.ZSSERVERS;
try {
if (zoo.exists(sserversPath)) {
List<String> children = zoo.getChildren(sserversPath);
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java
b/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java
index 801e0c301c..338acf9486 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/MockServerContext.java
@@ -23,11 +23,13 @@ import static org.easymock.EasyMock.expect;
import java.util.Properties;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.conf.ConfigurationCopy;
import org.apache.accumulo.core.conf.DefaultConfiguration;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.server.conf.store.PropStore;
import org.easymock.EasyMock;
@@ -47,9 +49,9 @@ public class MockServerContext {
public static ServerContext getWithZK(InstanceId instanceID, String zk, int
zkTimeout) {
var sc = get();
- expect(sc.getZooKeeperRoot()).andReturn("/accumulo/" +
instanceID).anyTimes();
+
expect(sc.getZooKeeperRoot()).andReturn(ZooUtil.getRoot(instanceID)).anyTimes();
expect(sc.getInstanceID()).andReturn(instanceID).anyTimes();
- expect(sc.zkUserPath()).andReturn("/accumulo/" + instanceID +
"/users").anyTimes();
+ expect(sc.zkUserPath()).andReturn(ZooUtil.getRoot(instanceID) +
Constants.ZUSERS).anyTimes();
expect(sc.getZooKeepers()).andReturn(zk).anyTimes();
expect(sc.getZooKeepersSessionTimeOut()).andReturn(zkTimeout).anyTimes();
return sc;
@@ -61,7 +63,7 @@ public class MockServerContext {
ServerContext sc = createMock(ServerContext.class);
expect(sc.getInstanceID()).andReturn(instanceID).anyTimes();
expect(sc.getZooReaderWriter()).andReturn(zrw).anyTimes();
- expect(sc.getZooKeeperRoot()).andReturn("/accumulo/" +
instanceID).anyTimes();
+
expect(sc.getZooKeeperRoot()).andReturn(ZooUtil.getRoot(instanceID)).anyTimes();
expect(sc.getPropStore()).andReturn(propStore).anyTimes();
return sc;
}
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
b/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
index 71e13cda8a..2743b2a7f2 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
@@ -37,6 +37,7 @@ import org.apache.accumulo.core.conf.SiteConfiguration;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.conf.codec.VersionedProperties;
import org.apache.accumulo.server.conf.store.NamespacePropKey;
@@ -79,7 +80,7 @@ public class ServerConfigurationFactoryTest {
expectLastCall().anyTimes();
context = createMock(ServerContext.class);
- expect(context.getZooKeeperRoot()).andReturn("/accumulo/" +
IID).anyTimes();
+
expect(context.getZooKeeperRoot()).andReturn(ZooUtil.getRoot(IID)).anyTimes();
expect(context.getInstanceID()).andReturn(IID).anyTimes();
expect(context.getZooKeepers()).andReturn(ZK_HOST).anyTimes();
expect(context.getZooKeepersSessionTimeOut()).andReturn(ZK_TIMEOUT).anyTimes();
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/conf/store/PropStoreKeyTest.java
b/server/base/src/test/java/org/apache/accumulo/server/conf/store/PropStoreKeyTest.java
index f3d040275d..80abef3aa7 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/conf/store/PropStoreKeyTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/conf/store/PropStoreKeyTest.java
@@ -20,6 +20,7 @@ package org.apache.accumulo.server.conf.store;
import static org.apache.accumulo.core.Constants.ZCONFIG;
import static org.apache.accumulo.core.Constants.ZNAMESPACES;
+import static org.apache.accumulo.core.Constants.ZROOT;
import static org.apache.accumulo.core.Constants.ZTABLES;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
@@ -35,6 +36,7 @@ import java.util.UUID;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.server.ServerContext;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
@@ -93,48 +95,46 @@ public class PropStoreKeyTest {
@Test
public void fromPathTest() {
-
- var iid = "3f9976c6-3bf1-41ab-9751-1b0a9be3551d";
-
- PropStoreKey<?> t1 = PropStoreKey.fromPath("/accumulo/" + iid +
"/tables/t1" + ZCONFIG);
+ var t1 = PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZTABLES +
"/t1" + ZCONFIG);
assertNotNull(t1);
assertEquals(TableId.of("t1"), t1.getId());
- PropStoreKey<?> n1 = PropStoreKey.fromPath("/accumulo/" + iid +
"/namespaces/n1" + ZCONFIG);
+ var n1 = PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZNAMESPACES +
"/n1" + ZCONFIG);
assertNotNull(n1);
assertEquals(NamespaceId.of("n1"), n1.getId());
assertNotNull(n1.getId());
- PropStoreKey<?> s1 = PropStoreKey.fromPath("/accumulo/" + iid + ZCONFIG);
+ var s1 = PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZCONFIG);
assertNotNull(s1);
// system config returns instance id as id placeholder
- assertEquals(iid, s1.getId().canonical());
+ assertEquals(instanceId, s1.getId());
}
@Test
public void invalidKeysTest() {
- var iid = "3f9976c6-3bf1-41ab-9751-1b0a9be3551d";
-
// too short
- assertNull(PropStoreKey.fromPath("/accumulo"));
+ assertNull(PropStoreKey.fromPath(ZROOT));
// not a system config
- assertTrue(PropStoreKey.fromPath("/accumulo/" + iid + ZCONFIG) instanceof
SystemPropKey);
+ assertTrue(
+ PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZCONFIG)
instanceof SystemPropKey);
assertNull(PropStoreKey.fromPath("/foo"));
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + "/foo"));
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + ZCONFIG + "/foo"));
-
- assertTrue(PropStoreKey
- .fromPath("/accumulo/" + iid + ZTABLES + "/a" + ZCONFIG) instanceof
TablePropKey);
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + ZTABLES + ZCONFIG));
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + "/invalid/a" +
ZCONFIG));
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + ZTABLES + "/a" +
ZCONFIG + "/foo"));
+ assertNull(PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + "/foo"));
+ assertNull(PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZCONFIG +
"/foo"));
assertTrue(PropStoreKey
- .fromPath("/accumulo/" + iid + ZNAMESPACES + "/a" + ZCONFIG)
instanceof NamespacePropKey);
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + ZNAMESPACES +
ZCONFIG));
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + "/invalid/a" +
ZCONFIG));
- assertNull(PropStoreKey.fromPath("/accumulo/" + iid + ZNAMESPACES + "/a" +
ZCONFIG + "/foo"));
+ .fromPath(ZooUtil.getRoot(instanceId) + ZTABLES + "/a" + ZCONFIG)
instanceof TablePropKey);
+ assertNull(PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZTABLES +
ZCONFIG));
+ assertNull(PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) +
"/invalid/a" + ZCONFIG));
+ assertNull(
+ PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZTABLES + "/a" +
ZCONFIG + "/foo"));
+
+ assertTrue(PropStoreKey.fromPath(
+ ZooUtil.getRoot(instanceId) + ZNAMESPACES + "/a" + ZCONFIG) instanceof
NamespacePropKey);
+ assertNull(PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZNAMESPACES
+ ZCONFIG));
+ assertNull(PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) +
"/invalid/a" + ZCONFIG));
+ assertNull(
+ PropStoreKey.fromPath(ZooUtil.getRoot(instanceId) + ZNAMESPACES + "/a"
+ ZCONFIG + "/foo"));
}
@Test
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/PropStoreEventTest.java
b/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/PropStoreEventTest.java
index 71247b4d3b..ca67be50fb 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/PropStoreEventTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/PropStoreEventTest.java
@@ -39,6 +39,7 @@ import java.util.UUID;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.conf.codec.VersionedPropCodec;
import org.apache.accumulo.server.conf.codec.VersionedProperties;
@@ -72,7 +73,7 @@ public class PropStoreEventTest {
expect(context.getZooKeepersSessionTimeOut()).andReturn(500).anyTimes();
expect(context.getInstanceID()).andReturn(instanceId).anyTimes();
- expect(zrw.exists(eq("/accumulo/" + instanceId),
anyObject())).andReturn(true).anyTimes();
+ expect(zrw.exists(eq(ZooUtil.getRoot(instanceId)),
anyObject())).andReturn(true).anyTimes();
readyMonitor = createMock(ReadyMonitor.class);
}
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/ZooPropStoreTest.java
b/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/ZooPropStoreTest.java
index 11d9f9e471..a09f2bef8b 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/ZooPropStoreTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/conf/store/impl/ZooPropStoreTest.java
@@ -45,6 +45,7 @@ import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.conf.codec.VersionedPropCodec;
import org.apache.accumulo.server.conf.codec.VersionedProperties;
@@ -75,7 +76,7 @@ public class ZooPropStoreTest {
expect(zrw.getSessionTimeout()).andReturn(2_000).anyTimes();
expect(context.getInstanceID()).andReturn(instanceId).anyTimes();
- expect(zrw.exists(eq("/accumulo/" + instanceId),
anyObject())).andReturn(true).anyTimes();
+ expect(zrw.exists(eq(ZooUtil.getRoot(instanceId)),
anyObject())).andReturn(true).anyTimes();
}
@AfterEach
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyWatcherTest.java
b/server/base/src/test/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyWatcherTest.java
index 01bc04b3a8..df71d4fe8c 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyWatcherTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/security/delegation/ZooAuthenticationKeyWatcherTest.java
@@ -42,6 +42,7 @@ import javax.crypto.KeyGenerator;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReader;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.zookeeper.KeeperException.NoNodeException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher.Event.EventType;
@@ -75,7 +76,7 @@ public class ZooAuthenticationKeyWatcherTest {
public void setupMocks() {
zk = createMock(ZooReader.class);
instanceId = InstanceId.of(UUID.randomUUID());
- baseNode = "/accumulo/" + instanceId + Constants.ZDELEGATION_TOKEN_KEYS;
+ baseNode = ZooUtil.getRoot(instanceId) + Constants.ZDELEGATION_TOKEN_KEYS;
secretManager = new AuthenticationTokenSecretManager(instanceId,
tokenLifetime);
keyWatcher = new ZooAuthenticationKeyWatcher(secretManager, zk, baseNode);
}
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
b/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
index 6616b05250..6621feb93f 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/security/handler/ZKAuthenticatorTest.java
@@ -35,10 +35,12 @@ import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.security.SystemPermission;
import org.apache.accumulo.core.security.TablePermission;
@@ -140,16 +142,17 @@ public class ZKAuthenticatorTest {
byte[] newHash = ZKSecurityTool.createPass(rawPass.clone());
// mocking zk interaction
- ServerContext context =
MockServerContext.getWithZK(InstanceId.of("example"), "", 30_000);
+ var instanceId = InstanceId.of("example");
+ ServerContext context = MockServerContext.getWithZK(instanceId, "",
30_000);
ZooReaderWriter zr = createMock(ZooReaderWriter.class);
expect(context.getZooReader()).andReturn(zr).anyTimes();
ZooKeeper zk = createMock(ZooKeeper.class);
expect(zk.getChildren(anyObject(),
anyObject())).andReturn(Arrays.asList(principal)).anyTimes();
- expect(zk.exists(matches("/accumulo/example/users/" + principal),
anyObject(Watcher.class)))
- .andReturn(new Stat()).anyTimes();
+ expect(zk.exists(matches(ZooUtil.getRoot(instanceId) + Constants.ZUSERS +
"/" + principal),
+ anyObject(Watcher.class))).andReturn(new Stat()).anyTimes();
expect(zr.getZooKeeper()).andReturn(zk).anyTimes();
- expect(zk.getData(matches("/accumulo/example/users/" + principal),
anyObject(), anyObject()))
- .andReturn(newHash).once();
+ expect(zk.getData(matches(ZooUtil.getRoot(instanceId) + Constants.ZUSERS +
"/" + principal),
+ anyObject(), anyObject())).andReturn(newHash).once();
replay(context, zr, zk);
// creating authenticator
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/util/AdminTest.java
b/server/base/src/test/java/org/apache/accumulo/server/util/AdminTest.java
index 2e6754176e..18a9045402 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/util/AdminTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/util/AdminTest.java
@@ -18,6 +18,13 @@
*/
package org.apache.accumulo.server.util;
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.eq;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.getCurrentArguments;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Collections;
@@ -28,69 +35,71 @@ import org.apache.accumulo.core.clientImpl.ClientContext;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
import org.apache.accumulo.core.fate.zookeeper.ZooCache.ZcStat;
-import org.easymock.EasyMock;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.junit.jupiter.api.Test;
public class AdminTest {
@Test
public void testZooKeeperTserverPath() {
- ClientContext context = EasyMock.createMock(ClientContext.class);
+ ClientContext context = createMock(ClientContext.class);
InstanceId instanceId = InstanceId.of(UUID.randomUUID());
- EasyMock.expect(context.getZooKeeperRoot()).andReturn(Constants.ZROOT +
"/" + instanceId);
+ expect(context.getZooKeeperRoot()).andReturn(ZooUtil.getRoot(instanceId));
- EasyMock.replay(context);
+ replay(context);
- assertEquals(Constants.ZROOT + "/" + instanceId + Constants.ZTSERVERS,
+ assertEquals(ZooUtil.getRoot(instanceId) + Constants.ZTSERVERS,
Admin.getTServersZkPath(context));
- EasyMock.verify(context);
+ verify(context);
}
@Test
public void testQualifySessionId() {
- ZooCache zc = EasyMock.createMock(ZooCache.class);
+ ZooCache zc = createMock(ZooCache.class);
+ InstanceId instanceId = InstanceId.of(UUID.randomUUID());
- String root = "/accumulo/id/tservers";
+ String root = ZooUtil.getRoot(instanceId) + Constants.ZTSERVERS;
String server = "localhost:12345";
final long session = 123456789L;
String serverPath = root + "/" + server;
String validZLockEphemeralNode = "zlock#" + UUID.randomUUID() +
"#0000000000";
- EasyMock.expect(zc.getChildren(serverPath))
+ expect(zc.getChildren(serverPath))
.andReturn(Collections.singletonList(validZLockEphemeralNode));
- EasyMock.expect(zc.get(EasyMock.eq(serverPath + "/" +
validZLockEphemeralNode),
- EasyMock.anyObject(ZcStat.class))).andAnswer(() -> {
- ZcStat stat = (ZcStat) EasyMock.getCurrentArguments()[1];
+ expect(zc.get(eq(serverPath + "/" + validZLockEphemeralNode),
anyObject(ZcStat.class)))
+ .andAnswer(() -> {
+ ZcStat stat = (ZcStat) getCurrentArguments()[1];
stat.setEphemeralOwner(session);
return new byte[0];
});
- EasyMock.replay(zc);
+ replay(zc);
assertEquals(server + "[" + Long.toHexString(session) + "]",
Admin.qualifyWithZooKeeperSessionId(root, zc, server));
- EasyMock.verify(zc);
+ verify(zc);
}
@Test
public void testCannotQualifySessionId() {
- ZooCache zc = EasyMock.createMock(ZooCache.class);
+ ZooCache zc = createMock(ZooCache.class);
+ InstanceId instanceId = InstanceId.of(UUID.randomUUID());
- String root = "/accumulo/id/tservers";
+ String root = ZooUtil.getRoot(instanceId) + Constants.ZTSERVERS;
String server = "localhost:12345";
String serverPath = root + "/" + server;
-
EasyMock.expect(zc.getChildren(serverPath)).andReturn(Collections.emptyList());
+ expect(zc.getChildren(serverPath)).andReturn(Collections.emptyList());
- EasyMock.replay(zc);
+ replay(zc);
// A server that isn't in ZooKeeper. Can't qualify it, should return the
original
assertEquals(server, Admin.qualifyWithZooKeeperSessionId(root, zc,
server));
- EasyMock.verify(zc);
+ verify(zc);
}
}
diff --git
a/server/base/src/test/java/org/apache/accumulo/server/util/ServiceStatusCmdTest.java
b/server/base/src/test/java/org/apache/accumulo/server/util/ServiceStatusCmdTest.java
index b48440b666..5a8bb11b77 100644
---
a/server/base/src/test/java/org/apache/accumulo/server/util/ServiceStatusCmdTest.java
+++
b/server/base/src/test/java/org/apache/accumulo/server/util/ServiceStatusCmdTest.java
@@ -38,6 +38,7 @@ import java.util.UUID;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReader;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.util.serviceStatus.ServiceStatusReport;
import org.apache.accumulo.server.util.serviceStatus.StatusSummary;
@@ -59,7 +60,7 @@ public class ServiceStatusCmdTest {
@BeforeEach
public void populateContext() {
InstanceId iid = InstanceId.of(UUID.randomUUID());
- zRoot = "/accumulo/" + iid.canonical();
+ zRoot = ZooUtil.getRoot(iid);
context = createMock(ServerContext.class);
expect(context.getInstanceID()).andReturn(iid).anyTimes();
expect(context.getZooKeeperRoot()).andReturn(zRoot).anyTimes();
diff --git
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
index c93a8cb8ca..c8908900b9 100644
---
a/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
+++
b/server/compactor/src/main/java/org/apache/accumulo/compactor/Compactor.java
@@ -217,8 +217,8 @@ public class Compactor extends AbstractServer implements
MetricsProducer, Compac
}
if (job.getKind() == TCompactionKind.USER) {
- String zTablePath = Constants.ZROOT + "/" +
getContext().getInstanceID()
- + Constants.ZTABLES + "/" + extent.tableId() +
Constants.ZTABLE_COMPACT_CANCEL_ID;
+ String zTablePath = getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + extent.tableId() + Constants.ZTABLE_COMPACT_CANCEL_ID;
byte[] id = getContext().getZooCache().get(zTablePath);
if (id == null) {
// table probably deleted
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 0a598712ad..ea5bb097dc 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
@@ -63,7 +63,6 @@ import
org.apache.accumulo.core.clientImpl.thrift.TableOperationExceptionType;
import
org.apache.accumulo.core.clientImpl.thrift.ThriftTableOperationException;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.fate.AgeOffStore;
@@ -431,7 +430,7 @@ public class Manager extends AbstractServer
AccumuloConfiguration aconf = context.getConfiguration();
log.info("Version {}", Constants.VERSION);
- log.info("Instance {}", getInstanceID());
+ log.info("Instance {}", context.getInstanceID());
timeKeeper = new ManagerTime(this, aconf);
tserverSet = new LiveTServerSet(context, this);
initializeBalancer();
@@ -449,7 +448,7 @@ public class Manager extends AbstractServer
final long tokenUpdateInterval =
aconf.getTimeInMillis(Property.GENERAL_DELEGATION_TOKEN_UPDATE_INTERVAL);
keyDistributor = new
ZooAuthenticationKeyDistributor(context.getZooReaderWriter(),
- getZooKeeperRoot() + Constants.ZDELEGATION_TOKEN_KEYS);
+ context.getZooKeeperRoot() + Constants.ZDELEGATION_TOKEN_KEYS);
authenticationTokenKeyManager = new
AuthenticationTokenKeyManager(context.getSecretManager(),
keyDistributor, tokenUpdateInterval, tokenLifetime);
delegationTokensAvailable = true;
@@ -461,14 +460,6 @@ public class Manager extends AbstractServer
aconf.getTimeInMillis(Property.MANAGER_RECOVERY_WAL_EXISTENCE_CACHE_TIME);
}
- public InstanceId getInstanceID() {
- return getContext().getInstanceID();
- }
-
- public String getZooKeeperRoot() {
- return getContext().getZooKeeperRoot();
- }
-
public TServerConnection getConnection(TServerInstance server) {
return tserverSet.getConnection(server);
}
@@ -477,7 +468,7 @@ public class Manager extends AbstractServer
ServerContext context = getContext();
synchronized (mergeLock) {
try {
- String path = getZooKeeperRoot() + Constants.ZTABLES + "/" + tableId +
"/merge";
+ String path = context.getZooKeeperRoot() + Constants.ZTABLES + "/" +
tableId + "/merge";
if (!context.getZooReaderWriter().exists(path)) {
return new MergeInfo();
}
@@ -501,8 +492,8 @@ public class Manager extends AbstractServer
throws KeeperException, InterruptedException {
ServerContext context = getContext();
synchronized (mergeLock) {
- String path =
- getZooKeeperRoot() + Constants.ZTABLES + "/" +
info.getExtent().tableId() + "/merge";
+ String path = context.getZooKeeperRoot() + Constants.ZTABLES + "/"
+ + info.getExtent().tableId() + "/merge";
info.setState(state);
if (state.equals(MergeState.NONE)) {
context.getZooReaderWriter().recursiveDelete(path,
NodeMissingPolicy.SKIP);
@@ -524,7 +515,7 @@ public class Manager extends AbstractServer
public void clearMergeState(TableId tableId) throws KeeperException,
InterruptedException {
synchronized (mergeLock) {
- String path = getZooKeeperRoot() + Constants.ZTABLES + "/" + tableId +
"/merge";
+ String path = getContext().getZooKeeperRoot() + Constants.ZTABLES + "/"
+ tableId + "/merge";
getContext().getZooReaderWriter().recursiveDelete(path,
NodeMissingPolicy.SKIP);
mergeLock.notifyAll();
}
@@ -534,8 +525,8 @@ public class Manager extends AbstractServer
void setManagerGoalState(ManagerGoalState state) {
try {
getContext().getZooReaderWriter().putPersistentData(
- getZooKeeperRoot() + Constants.ZMANAGER_GOAL_STATE,
state.name().getBytes(UTF_8),
- NodeExistsPolicy.OVERWRITE);
+ getContext().getZooKeeperRoot() + Constants.ZMANAGER_GOAL_STATE,
+ state.name().getBytes(UTF_8), NodeExistsPolicy.OVERWRITE);
} catch (Exception ex) {
log.error("Unable to set manager goal state in zookeeper");
}
@@ -545,7 +536,7 @@ public class Manager extends AbstractServer
while (true) {
try {
byte[] data = getContext().getZooReaderWriter()
- .getData(getZooKeeperRoot() + Constants.ZMANAGER_GOAL_STATE);
+ .getData(getContext().getZooKeeperRoot() +
Constants.ZMANAGER_GOAL_STATE);
return ManagerGoalState.valueOf(new String(data, UTF_8));
} catch (Exception e) {
log.error("Problem getting real goal state from zookeeper: ", e);
@@ -1215,7 +1206,7 @@ public class Manager extends AbstractServer
@Override
public void run() {
final ServerContext context = getContext();
- final String zroot = getZooKeeperRoot();
+ final String zroot = context.getZooKeeperRoot();
// ACCUMULO-4424 Put up the Thrift servers before getting the lock as a
sign of process health
// when a hot-standby
@@ -1347,10 +1338,11 @@ public class Manager extends AbstractServer
throw new IllegalStateException("Upgrade coordinator is unexpectedly not
complete");
}
try {
- final AgeOffStore<Manager> store = new AgeOffStore<>(
- new org.apache.accumulo.core.fate.ZooStore<>(getZooKeeperRoot() +
Constants.ZFATE,
- context.getZooReaderWriter()),
- HOURS.toMillis(8), System::currentTimeMillis);
+ final AgeOffStore<Manager> store =
+ new AgeOffStore<>(
+ new org.apache.accumulo.core.fate.ZooStore<>(
+ context.getZooKeeperRoot() + Constants.ZFATE,
context.getZooReaderWriter()),
+ HOURS.toMillis(8), System::currentTimeMillis);
Fate<Manager> f = initializeFateInstance(store, getConfiguration());
fateRef.set(f);
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
index ad00a842ea..02057c3b89 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java
@@ -106,8 +106,8 @@ public class ManagerClientServiceHandler implements
ManagerClientService.Iface {
throw new ThriftSecurityException(c.getPrincipal(),
SecurityErrorCode.PERMISSION_DENIED);
}
- String zTablePath = Constants.ZROOT + "/" + manager.getInstanceID() +
Constants.ZTABLES + "/"
- + tableId + Constants.ZTABLE_FLUSH_ID;
+ String zTablePath = manager.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/" + tableId
+ + Constants.ZTABLE_FLUSH_ID;
ZooReaderWriter zoo = manager.getContext().getZooReaderWriter();
byte[] fid;
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerTime.java
b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerTime.java
index fa7020a0ef..b7cb2bfcdc 100644
--- a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerTime.java
+++ b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerTime.java
@@ -89,7 +89,7 @@ public class ManagerTime {
private final AtomicReference<Duration> skewAmount;
public ManagerTime(Manager manager, AccumuloConfiguration conf) throws
IOException {
- this.zPath = manager.getZooKeeperRoot() + Constants.ZMANAGER_TICK;
+ this.zPath = manager.getContext().getZooKeeperRoot() +
Constants.ZMANAGER_TICK;
this.zk = manager.getContext().getZooReaderWriter();
this.manager = manager;
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/recovery/RecoveryManager.java
b/server/manager/src/main/java/org/apache/accumulo/manager/recovery/RecoveryManager.java
index 5d48d839a0..7efd6f4511 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/recovery/RecoveryManager.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/recovery/RecoveryManager.java
@@ -78,7 +78,7 @@ public class RecoveryManager {
zooCache = new ZooCache(manager.getContext().getZooReader(), null);
try {
List<String> workIDs =
- new DistributedWorkQueue(manager.getZooKeeperRoot() +
Constants.ZRECOVERY,
+ new DistributedWorkQueue(manager.getContext().getZooKeeperRoot() +
Constants.ZRECOVERY,
manager.getConfiguration(),
manager.getContext()).getWorkQueued();
sortsQueued.addAll(workIDs);
} catch (Exception e) {
@@ -131,14 +131,15 @@ public class RecoveryManager {
private void initiateSort(String sortId, String source, final String
destination)
throws KeeperException, InterruptedException {
String work = source + "|" + destination;
- new DistributedWorkQueue(manager.getZooKeeperRoot() + Constants.ZRECOVERY,
+ new DistributedWorkQueue(manager.getContext().getZooKeeperRoot() +
Constants.ZRECOVERY,
manager.getConfiguration(), manager.getContext()).addWork(sortId,
work.getBytes(UTF_8));
synchronized (this) {
sortsQueued.add(sortId);
}
- final String path = manager.getZooKeeperRoot() + Constants.ZRECOVERY + "/"
+ sortId;
+ final String path =
+ manager.getContext().getZooKeeperRoot() + Constants.ZRECOVERY + "/" +
sortId;
log.info("Created zookeeper entry {} with data {}", path, work);
}
@@ -180,9 +181,8 @@ public class RecoveryManager {
sortQueued = sortsQueued.contains(sortId);
}
- if (sortQueued
- && zooCache.get(manager.getZooKeeperRoot() + Constants.ZRECOVERY +
"/" + sortId)
- == null) {
+ if (sortQueued && zooCache.get(
+ manager.getContext().getZooKeeperRoot() + Constants.ZRECOVERY + "/"
+ sortId) == null) {
synchronized (this) {
sortsQueued.remove(sortId);
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/state/MergeStats.java
b/server/manager/src/main/java/org/apache/accumulo/manager/state/MergeStats.java
index a60f8f46dc..c414cff441 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/state/MergeStats.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/state/MergeStats.java
@@ -33,7 +33,6 @@ import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
-import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.metadata.AccumuloTable;
import org.apache.accumulo.core.metadata.TabletLocationState;
import
org.apache.accumulo.core.metadata.TabletLocationState.BadLocationStateException;
@@ -238,8 +237,8 @@ public class MergeStats {
ZooReaderWriter zooReaderWriter =
opts.getServerContext().getZooReaderWriter();
for (Entry<String,String> entry : tableIdMap.entrySet()) {
final String table = entry.getKey(), tableId = entry.getValue();
- String path =
ZooUtil.getRoot(client.instanceOperations().getInstanceId())
- + Constants.ZTABLES + "/" + tableId + "/merge";
+ String path = opts.getServerContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + tableId + "/merge";
MergeInfo info = new MergeInfo();
if (zooReaderWriter.exists(path)) {
byte[] data = zooReaderWriter.getData(path);
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java
index 46e0ce12c5..4c2fcb0645 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactRange.java
@@ -97,8 +97,8 @@ public class CompactRange extends ManagerRepo {
@Override
public Repo<Manager> call(final long tid, Manager env) throws Exception {
- String zTablePath = Constants.ZROOT + "/" + env.getInstanceID() +
Constants.ZTABLES + "/"
- + tableId + Constants.ZTABLE_COMPACT_ID;
+ String zTablePath = env.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/" + tableId
+ + Constants.ZTABLE_COMPACT_ID;
ZooReaderWriter zoo = env.getContext().getZooReaderWriter();
byte[] cid;
@@ -147,8 +147,8 @@ public class CompactRange extends ManagerRepo {
static void removeIterators(Manager environment, final long txid, TableId
tableId)
throws Exception {
- String zTablePath = Constants.ZROOT + "/" + environment.getInstanceID() +
Constants.ZTABLES
- + "/" + tableId + Constants.ZTABLE_COMPACT_ID;
+ String zTablePath = environment.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + tableId + Constants.ZTABLE_COMPACT_ID;
ZooReaderWriter zoo = environment.getContext().getZooReaderWriter();
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java
index 6220bb163c..afcf127dce 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java
@@ -35,6 +35,7 @@ import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.fate.FateTxId;
import org.apache.accumulo.core.fate.Repo;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.manager.state.tables.TableState;
import org.apache.accumulo.core.metadata.AccumuloTable;
import org.apache.accumulo.core.metadata.TServerInstance;
@@ -54,7 +55,7 @@ import org.slf4j.LoggerFactory;
class CompactionDriver extends ManagerRepo {
public static String createCompactionCancellationPath(InstanceId instanceId,
TableId tableId) {
- return Constants.ZROOT + "/" + instanceId + Constants.ZTABLES + "/" +
tableId.canonical()
+ return ZooUtil.getRoot(instanceId) + Constants.ZTABLES + "/" +
tableId.canonical()
+ Constants.ZTABLE_COMPACT_CANCEL_ID;
}
@@ -85,7 +86,8 @@ class CompactionDriver extends ManagerRepo {
return 0;
}
- String zCancelID =
createCompactionCancellationPath(manager.getInstanceID(), tableId);
+ String zCancelID =
+ createCompactionCancellationPath(manager.getContext().getInstanceID(),
tableId);
ZooReaderWriter zoo = manager.getContext().getZooReaderWriter();
if (Long.parseLong(new String(zoo.getData(zCancelID), UTF_8)) >=
compactId) {
@@ -96,7 +98,7 @@ class CompactionDriver extends ManagerRepo {
}
String deleteMarkerPath =
- PreDeleteTable.createDeleteMarkerPath(manager.getInstanceID(),
tableId);
+
PreDeleteTable.createDeleteMarkerPath(manager.getContext().getInstanceID(),
tableId);
if (zoo.exists(deleteMarkerPath)) {
// table is being deleted
throw new AcceptableThriftTableOperationException(tableId.canonical(),
null,
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java
index 6dad08986d..0901edf9ea 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/cancel/CancelCompactions.java
@@ -68,9 +68,9 @@ public class CancelCompactions extends ManagerRepo {
public static void mutateZooKeeper(long tid, TableId tableId, Manager
environment)
throws Exception {
- String zCompactID = Constants.ZROOT + "/" + environment.getInstanceID() +
Constants.ZTABLES
- + "/" + tableId + Constants.ZTABLE_COMPACT_ID;
- String zCancelID = Constants.ZROOT + "/" + environment.getInstanceID() +
Constants.ZTABLES + "/"
+ String zCompactID = environment.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + tableId + Constants.ZTABLE_COMPACT_ID;
+ String zCancelID = environment.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ tableId + Constants.ZTABLE_COMPACT_CANCEL_ID;
ZooReaderWriter zoo = environment.getContext().getZooReaderWriter();
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java
index 000d18ba67..77273d71d0 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/delete/PreDeleteTable.java
@@ -26,6 +26,7 @@ import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.Repo;
import
org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.core.fate.zookeeper.ZooUtil.NodeExistsPolicy;
import org.apache.accumulo.manager.Manager;
import org.apache.accumulo.manager.tableOps.ManagerRepo;
@@ -36,7 +37,7 @@ import org.apache.zookeeper.KeeperException;
public class PreDeleteTable extends ManagerRepo {
public static String createDeleteMarkerPath(InstanceId instanceId, TableId
tableId) {
- return Constants.ZROOT + "/" + instanceId + Constants.ZTABLES + "/" +
tableId.canonical()
+ return ZooUtil.getRoot(instanceId) + Constants.ZTABLES + "/" +
tableId.canonical()
+ Constants.ZTABLE_DELETE_MARKER;
}
@@ -58,7 +59,8 @@ public class PreDeleteTable extends ManagerRepo {
private void preventFutureCompactions(Manager environment)
throws KeeperException, InterruptedException {
- String deleteMarkerPath =
createDeleteMarkerPath(environment.getInstanceID(), tableId);
+ String deleteMarkerPath =
+ createDeleteMarkerPath(environment.getContext().getInstanceID(),
tableId);
ZooReaderWriter zoo = environment.getContext().getZooReaderWriter();
zoo.putPersistentData(deleteMarkerPath, new byte[] {},
NodeExistsPolicy.SKIP);
}
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java
index b47223f151..301f6e65e8 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/create/PopulateZookeeperWithNamespace.java
@@ -54,8 +54,8 @@ class PopulateZookeeperWithNamespace extends ManagerRepo {
try {
var context = manager.getContext();
NamespaceMapping.put(context.getZooReaderWriter(),
- Constants.ZROOT + "/" + context.getInstanceID() +
Constants.ZNAMESPACES,
- namespaceInfo.namespaceId, namespaceInfo.namespaceName);
+ context.getZooKeeperRoot() + Constants.ZNAMESPACES,
namespaceInfo.namespaceId,
+ namespaceInfo.namespaceName);
TableManager.prepareNewNamespaceState(context, namespaceInfo.namespaceId,
namespaceInfo.namespaceName, NodeExistsPolicy.OVERWRITE);
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java
index b1fcb9f30b..ebcb2e73ce 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/namespace/rename/RenameNamespace.java
@@ -56,8 +56,8 @@ public class RenameNamespace extends ManagerRepo {
Utils.getTableNameLock().lock();
try {
- NamespaceMapping.rename(zoo, manager.getZooKeeperRoot() +
Constants.ZNAMESPACES, namespaceId,
- oldName, newName);
+ NamespaceMapping.rename(zoo, manager.getContext().getZooKeeperRoot() +
Constants.ZNAMESPACES,
+ namespaceId, oldName, newName);
manager.getContext().clearTableListCache();
} finally {
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 3fbbd5184b..4d605f6df0 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
@@ -83,8 +83,8 @@ public class RenameTable extends ManagerRepo {
final String newName = qualifiedNewTableName.getSecond();
final String oldName = qualifiedOldTableName.getSecond();
- final String tap =
- manager.getZooKeeperRoot() + Constants.ZTABLES + "/" + tableId +
Constants.ZTABLE_NAME;
+ final String tap = manager.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/" + tableId
+ + Constants.ZTABLE_NAME;
zoo.mutateExisting(tap, current -> {
final String currentName = new String(current, UTF_8);
diff --git
a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java
b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java
index eb7ab83904..4388ec6562 100644
---
a/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java
+++
b/server/manager/src/main/java/org/apache/accumulo/manager/tserverOps/ShutdownTServer.java
@@ -96,11 +96,10 @@ public class ShutdownTServer extends ManagerRepo {
// suppress assignment of tablets to the server
if (force) {
ZooReaderWriter zoo = manager.getContext().getZooReaderWriter();
- var path =
- ServiceLock.path(manager.getZooKeeperRoot() + Constants.ZTSERVERS +
"/" + hostAndPort);
+ var zRoot = manager.getContext().getZooKeeperRoot();
+ var path = ServiceLock.path(zRoot + Constants.ZTSERVERS + "/" +
hostAndPort);
ServiceLock.deleteLock(zoo, path);
- path = ServiceLock
- .path(manager.getZooKeeperRoot() + Constants.ZDEADTSERVERS + "/" +
hostAndPort);
+ path = ServiceLock.path(zRoot + Constants.ZDEADTSERVERS + "/" +
hostAndPort);
zoo.putPersistentData(path.toString(), "forced down".getBytes(UTF_8),
NodeExistsPolicy.OVERWRITE);
}
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 60d80aaa44..ffdd6ba506 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
@@ -124,7 +124,7 @@ public class Upgrader11to12 implements Upgrader {
log.info("Root metadata in ZooKeeper after upgrade: {}", rtm.toJson());
}
- String zPath = Constants.ZROOT + "/" + context.getInstanceID() +
Constants.ZNAMESPACES;
+ String zPath = context.getZooKeeperRoot() + Constants.ZNAMESPACES;
byte[] namespacesData = zrw.getData(zPath);
if (namespacesData.length != 0) {
throw new IllegalStateException(
diff --git
a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriverTest.java
b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriverTest.java
index 8840138c9a..8cfd2d0c63 100644
---
a/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriverTest.java
+++
b/server/manager/src/test/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriverTest.java
@@ -19,6 +19,10 @@
package org.apache.accumulo.manager.tableOps.compact;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -35,7 +39,6 @@ import
org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
import org.apache.accumulo.manager.Manager;
import org.apache.accumulo.manager.tableOps.delete.PreDeleteTable;
import org.apache.accumulo.server.ServerContext;
-import org.easymock.EasyMock;
import org.junit.jupiter.api.Test;
public class CompactionDriverTest {
@@ -51,17 +54,17 @@ public class CompactionDriverTest {
final byte[] startRow = new byte[0];
final byte[] endRow = new byte[0];
- Manager manager = EasyMock.createNiceMock(Manager.class);
- ServerContext ctx = EasyMock.createNiceMock(ServerContext.class);
- ZooReaderWriter zrw = EasyMock.createNiceMock(ZooReaderWriter.class);
- EasyMock.expect(manager.getInstanceID()).andReturn(instance).anyTimes();
- EasyMock.expect(manager.getContext()).andReturn(ctx);
- EasyMock.expect(ctx.getZooReaderWriter()).andReturn(zrw);
+ Manager manager = createMock(Manager.class);
+ ServerContext ctx = createMock(ServerContext.class);
+ ZooReaderWriter zrw = createMock(ZooReaderWriter.class);
+ expect(ctx.getInstanceID()).andReturn(instance).anyTimes();
+ expect(ctx.getZooReaderWriter()).andReturn(zrw).anyTimes();
+ expect(manager.getContext()).andReturn(ctx).anyTimes();
final String zCancelID =
CompactionDriver.createCompactionCancellationPath(instance, tableId);
-
EasyMock.expect(zrw.getData(zCancelID)).andReturn(Long.toString(cancelId).getBytes(UTF_8));
+
expect(zrw.getData(zCancelID)).andReturn(Long.toString(cancelId).getBytes(UTF_8));
- EasyMock.replay(manager, ctx, zrw);
+ replay(manager, ctx, zrw);
final CompactionDriver driver =
new CompactionDriver(compactId, namespaceId, tableId, startRow,
endRow);
@@ -75,7 +78,7 @@ public class CompactionDriverTest {
assertEquals(e.getType(), TableOperationExceptionType.OTHER);
assertEquals(TableOperationsImpl.COMPACTION_CANCELED_MSG,
e.getDescription());
- EasyMock.verify(manager, ctx, zrw);
+ verify(manager, ctx, zrw);
}
@Test
@@ -89,20 +92,20 @@ public class CompactionDriverTest {
final byte[] startRow = new byte[0];
final byte[] endRow = new byte[0];
- Manager manager = EasyMock.createNiceMock(Manager.class);
- ServerContext ctx = EasyMock.createNiceMock(ServerContext.class);
- ZooReaderWriter zrw = EasyMock.createNiceMock(ZooReaderWriter.class);
- EasyMock.expect(manager.getInstanceID()).andReturn(instance).anyTimes();
- EasyMock.expect(manager.getContext()).andReturn(ctx);
- EasyMock.expect(ctx.getZooReaderWriter()).andReturn(zrw);
+ Manager manager = createMock(Manager.class);
+ ServerContext ctx = createMock(ServerContext.class);
+ ZooReaderWriter zrw = createMock(ZooReaderWriter.class);
+ expect(ctx.getInstanceID()).andReturn(instance).anyTimes();
+ expect(ctx.getZooReaderWriter()).andReturn(zrw).anyTimes();
+ expect(manager.getContext()).andReturn(ctx).anyTimes();
final String zCancelID =
CompactionDriver.createCompactionCancellationPath(instance, tableId);
-
EasyMock.expect(zrw.getData(zCancelID)).andReturn(Long.toString(cancelId).getBytes(UTF_8));
+
expect(zrw.getData(zCancelID)).andReturn(Long.toString(cancelId).getBytes(UTF_8));
String deleteMarkerPath = PreDeleteTable.createDeleteMarkerPath(instance,
tableId);
- EasyMock.expect(zrw.exists(deleteMarkerPath)).andReturn(true);
+ expect(zrw.exists(deleteMarkerPath)).andReturn(true);
- EasyMock.replay(manager, ctx, zrw);
+ replay(manager, ctx, zrw);
final CompactionDriver driver =
new CompactionDriver(compactId, namespaceId, tableId, startRow,
endRow);
@@ -116,7 +119,7 @@ public class CompactionDriverTest {
assertEquals(e.getType(), TableOperationExceptionType.OTHER);
assertEquals(TableOperationsImpl.TABLE_DELETED_MSG, e.getDescription());
- EasyMock.verify(manager, ctx, zrw);
+ verify(manager, ctx, zrw);
}
}
diff --git
a/server/manager/src/test/java/org/apache/accumulo/manager/upgrade/Upgrader11to12Test.java
b/server/manager/src/test/java/org/apache/accumulo/manager/upgrade/Upgrader11to12Test.java
index bb21b4efec..d0c1bbf1cf 100644
---
a/server/manager/src/test/java/org/apache/accumulo/manager/upgrade/Upgrader11to12Test.java
+++
b/server/manager/src/test/java/org/apache/accumulo/manager/upgrade/Upgrader11to12Test.java
@@ -353,49 +353,46 @@ public class Upgrader11to12Test {
ServerContext context = createMock(ServerContext.class);
ZooReaderWriter zrw = createStrictMock(ZooReaderWriter.class);
+ final var zkRoot = ZooUtil.getRoot(iid);
expect(context.getInstanceID()).andReturn(iid).anyTimes();
expect(context.getZooReaderWriter()).andReturn(zrw).anyTimes();
+ expect(context.getZooKeeperRoot()).andReturn(zkRoot).anyTimes();
- zrw.recursiveDelete(Constants.ZROOT + "/" + iid.canonical() + "/tracers",
- ZooUtil.NodeMissingPolicy.SKIP);
+ zrw.recursiveDelete(zkRoot + "/tracers", ZooUtil.NodeMissingPolicy.SKIP);
expectLastCall().once();
Capture<Stat> statCapture = newCapture();
- expect(zrw.getData(eq(Constants.ZROOT + "/" + iid.canonical() +
"/root_tablet"),
- capture(statCapture))).andAnswer(() -> {
- Stat stat = statCapture.getValue();
- stat.setCtime(System.currentTimeMillis());
- stat.setMtime(System.currentTimeMillis());
- stat.setVersion(123); // default version
- stat.setDataLength(zKRootV1.length);
- statCapture.setValue(stat);
- return zKRootV1;
- }).once();
+ expect(zrw.getData(eq(zkRoot + "/root_tablet"),
capture(statCapture))).andAnswer(() -> {
+ Stat stat = statCapture.getValue();
+ stat.setCtime(System.currentTimeMillis());
+ stat.setMtime(System.currentTimeMillis());
+ stat.setVersion(123); // default version
+ stat.setDataLength(zKRootV1.length);
+ statCapture.setValue(stat);
+ return zKRootV1;
+ }).once();
Capture<byte[]> byteCapture = newCapture();
- expect(zrw.overwritePersistentData(eq(Constants.ZROOT + "/" +
iid.canonical() + "/root_tablet"),
- capture(byteCapture), eq(123))).andReturn(true).once();
+ expect(zrw.overwritePersistentData(eq(zkRoot + "/root_tablet"),
capture(byteCapture), eq(123)))
+ .andReturn(true).once();
- expect(zrw.getData(eq(Constants.ZROOT + "/" + iid.canonical() +
Constants.ZNAMESPACES)))
- .andReturn(new byte[0]).once();
+ expect(zrw.getData(eq(zkRoot + Constants.ZNAMESPACES))).andReturn(new
byte[0]).once();
Map<String,String> mockNamespaces = Map.of("ns1", "ns1name", "ns2",
"ns2name");
- expect(zrw.getChildren(eq(Constants.ZROOT + "/" + iid.canonical() +
Constants.ZNAMESPACES)))
+ expect(zrw.getChildren(eq(zkRoot + Constants.ZNAMESPACES)))
.andReturn(List.copyOf(mockNamespaces.keySet())).once();
for (String ns : mockNamespaces.keySet()) {
- Supplier<String> pathMatcher = () -> eq(Constants.ZROOT + "/" +
iid.canonical()
- + Constants.ZNAMESPACES + "/" + ns + ZNAMESPACE_NAME);
+ Supplier<String> pathMatcher =
+ () -> eq(zkRoot + Constants.ZNAMESPACES + "/" + ns +
ZNAMESPACE_NAME);
expect(zrw.getData(pathMatcher.get())).andReturn(mockNamespaces.get(ns).getBytes(UTF_8))
.once();
}
byte[] mapping = NamespaceMapping.serialize(mockNamespaces);
- expect(
- zrw.putPersistentData(eq(Constants.ZROOT + "/" + iid.canonical() +
Constants.ZNAMESPACES),
- aryEq(mapping), eq(ZooUtil.NodeExistsPolicy.OVERWRITE)))
- .andReturn(true).once();
+ expect(zrw.putPersistentData(eq(zkRoot + Constants.ZNAMESPACES),
aryEq(mapping),
+ eq(ZooUtil.NodeExistsPolicy.OVERWRITE))).andReturn(true).once();
for (String ns : mockNamespaces.keySet()) {
- Supplier<String> pathMatcher = () -> eq(Constants.ZROOT + "/" +
iid.canonical()
- + Constants.ZNAMESPACES + "/" + ns + ZNAMESPACE_NAME);
+ Supplier<String> pathMatcher =
+ () -> eq(zkRoot + Constants.ZNAMESPACES + "/" + ns +
ZNAMESPACE_NAME);
zrw.delete(pathMatcher.get());
expectLastCall().once();
}
diff --git
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 287bee16f3..53cba11d06 100644
---
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -679,8 +679,8 @@ public class Tablet extends TabletBase {
public long getFlushID() throws NoNodeException {
try {
- String zTablePath = Constants.ZROOT + "/" + tabletServer.getInstanceID()
+ Constants.ZTABLES
- + "/" + extent.tableId() + Constants.ZTABLE_FLUSH_ID;
+ String zTablePath = tabletServer.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + extent.tableId() + Constants.ZTABLE_FLUSH_ID;
String id = new String(context.getZooReaderWriter().getData(zTablePath),
UTF_8);
return Long.parseLong(id);
} catch (InterruptedException | NumberFormatException e) {
@@ -695,16 +695,16 @@ public class Tablet extends TabletBase {
}
long getCompactionCancelID() {
- String zTablePath = Constants.ZROOT + "/" + tabletServer.getInstanceID() +
Constants.ZTABLES
- + "/" + extent.tableId() + Constants.ZTABLE_COMPACT_CANCEL_ID;
+ String zTablePath = tabletServer.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + extent.tableId() + Constants.ZTABLE_COMPACT_CANCEL_ID;
String id = new String(context.getZooCache().get(zTablePath), UTF_8);
return Long.parseLong(id);
}
public Pair<Long,CompactionConfig> getCompactionID() throws NoNodeException {
try {
- String zTablePath = Constants.ZROOT + "/" + tabletServer.getInstanceID()
+ Constants.ZTABLES
- + "/" + extent.tableId() + Constants.ZTABLE_COMPACT_ID;
+ String zTablePath = tabletServer.getContext().getZooKeeperRoot() +
Constants.ZTABLES + "/"
+ + extent.tableId() + Constants.ZTABLE_COMPACT_ID;
String[] tokens =
new String(context.getZooReaderWriter().getData(zTablePath),
UTF_8).split(",");
diff --git a/test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
b/test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
index 52827a4d69..289f71d504 100644
--- a/test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ExistingMacIT.java
@@ -31,7 +31,6 @@ import java.util.Collection;
import java.util.Map.Entry;
import java.util.Set;
-import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.BatchWriter;
@@ -117,8 +116,7 @@ public class ExistingMacIT extends ConfigurableMacBase {
}
ZooReaderWriter zrw = getCluster().getServerContext().getZooReaderWriter();
- final String zInstanceRoot =
- Constants.ZROOT + "/" + client.instanceOperations().getInstanceId();
+ final String zInstanceRoot =
getCluster().getServerContext().getZooKeeperRoot();
while (!AccumuloStatus.isAccumuloOffline(zrw, zInstanceRoot)) {
log.debug("Accumulo services still have their ZK locks held");
Thread.sleep(1000);
diff --git a/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
b/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
index 8e5b076557..efb3bbbf31 100644
--- a/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ImportExportIT.java
@@ -47,6 +47,7 @@ import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.admin.CompactionConfig;
import org.apache.accumulo.core.client.admin.ImportConfiguration;
+import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Mutation;
import org.apache.accumulo.core.data.Range;
@@ -371,9 +372,11 @@ public class ImportExportIT extends AccumuloClusterHarness
{
AccumuloCluster cluster = getCluster();
assertTrue(cluster instanceof MiniAccumuloClusterImpl);
MiniAccumuloClusterImpl mac = (MiniAccumuloClusterImpl) cluster;
- String rootPath = mac.getConfig().getDir().getAbsolutePath();
FileSystem fs = getCluster().getFileSystem();
- FileStatus[] status = fs.listStatus(new Path(rootPath +
"/accumulo/tables/" + destTableId));
+ // the following path expects mini to be configured with a single volume
+ final Path tablePath = new
Path(mac.getSiteConfiguration().get(Property.INSTANCE_VOLUMES) + "/"
+ + Constants.TABLE_DIR + "/" + destTableId);
+ FileStatus[] status = fs.listStatus(tablePath);
for (FileStatus tabletDir : status) {
var contents = fs.listStatus(tabletDir.getPath());
for (FileStatus file : contents) {
diff --git
a/test/src/main/java/org/apache/accumulo/test/ThriftServerBindsBeforeZooKeeperLockIT.java
b/test/src/main/java/org/apache/accumulo/test/ThriftServerBindsBeforeZooKeeperLockIT.java
index 33588a882b..41a3f76e63 100644
---
a/test/src/main/java/org/apache/accumulo/test/ThriftServerBindsBeforeZooKeeperLockIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/ThriftServerBindsBeforeZooKeeperLockIT.java
@@ -32,7 +32,6 @@ import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.util.MonitorUtil;
import org.apache.accumulo.gc.SimpleGarbageCollector;
import org.apache.accumulo.harness.AccumuloClusterHarness;
@@ -135,13 +134,12 @@ public class ThriftServerBindsBeforeZooKeeperLockIT
extends AccumuloClusterHarne
public void testManagerService() throws Exception {
final MiniAccumuloClusterImpl cluster = (MiniAccumuloClusterImpl)
getCluster();
try (AccumuloClient client =
Accumulo.newClient().from(getClientProps()).build()) {
- final InstanceId instanceID =
client.instanceOperations().getInstanceId();
// Wait for the Manager to grab its lock
while (true) {
try {
List<String> locks = cluster.getServerContext().getZooReader()
- .getChildren(Constants.ZROOT + "/" + instanceID +
Constants.ZMANAGER_LOCK);
+ .getChildren(cluster.getServerContext().getZooKeeperRoot() +
Constants.ZMANAGER_LOCK);
if (!locks.isEmpty()) {
break;
}
@@ -194,13 +192,12 @@ public class ThriftServerBindsBeforeZooKeeperLockIT
extends AccumuloClusterHarne
public void testGarbageCollectorPorts() throws Exception {
final MiniAccumuloClusterImpl cluster = (MiniAccumuloClusterImpl)
getCluster();
try (AccumuloClient client =
Accumulo.newClient().from(getClientProps()).build()) {
- InstanceId instanceID = client.instanceOperations().getInstanceId();
// Wait for the Manager to grab its lock
while (true) {
try {
List<String> locks = cluster.getServerContext().getZooReader()
- .getChildren(Constants.ZROOT + "/" + instanceID +
Constants.ZGC_LOCK);
+ .getChildren(cluster.getServerContext().getZooKeeperRoot() +
Constants.ZGC_LOCK);
if (!locks.isEmpty()) {
break;
}
diff --git a/test/src/main/java/org/apache/accumulo/test/VolumeManagerIT.java
b/test/src/main/java/org/apache/accumulo/test/VolumeManagerIT.java
index 4a3002bd07..7e3e619936 100644
--- a/test/src/main/java/org/apache/accumulo/test/VolumeManagerIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/VolumeManagerIT.java
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Map;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.admin.NewTableConfiguration;
@@ -50,6 +51,7 @@ public class VolumeManagerIT extends ConfigurableMacBase {
vol1 = config.getSiteConfig().get(Property.INSTANCE_VOLUMES.getKey());
assertTrue(vol1.contains("localhost"));
vol2 = vol1.replace("localhost", "127.0.0.1");
+ // order matters here, because this is parsed later to find the path to
the table volumes
config.setProperty(Property.INSTANCE_VOLUMES.getKey(), String.join(",",
vol2, vol1));
// Set Volume specific HDFS overrides
@@ -121,8 +123,11 @@ public class VolumeManagerIT extends ConfigurableMacBase {
// Confirm that table 1 has a block size of 10485760
FileSystem fs = this.cluster.getMiniDfs().getFileSystem();
- RemoteIterator<LocatedFileStatus> iter1 =
- fs.listFiles(new Path("/accumulo/tables/" + tid1), true);
+ // t1 is configured to use vol1, which is the second in the volumes list
+ final Path tablePath1 =
+ new
Path(cluster.getSiteConfiguration().get(Property.INSTANCE_VOLUMES).split(",")[1]
+ "/"
+ + Constants.TABLE_DIR + "/" + tid1);
+ RemoteIterator<LocatedFileStatus> iter1 = fs.listFiles(tablePath1, true);
while (iter1.hasNext()) {
LocatedFileStatus stat = iter1.next();
if (stat.isFile()) {
@@ -131,8 +136,11 @@ public class VolumeManagerIT extends ConfigurableMacBase {
}
// Confirm that table 1 has a block size of 51200000
- RemoteIterator<LocatedFileStatus> iter2 =
- fs.listFiles(new Path("/accumulo/tables/" + tid2), true);
+ // t2 is configured to use vol2, which is the first in the volumes list
+ final Path tablePath2 =
+ new
Path(cluster.getSiteConfiguration().get(Property.INSTANCE_VOLUMES).split(",")[0]
+ "/"
+ + Constants.TABLE_DIR + "/" + tid2);
+ RemoteIterator<LocatedFileStatus> iter2 = fs.listFiles(tablePath2, true);
while (iter2.hasNext()) {
LocatedFileStatus stat = iter2.next();
if (stat.isFile()) {
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/FateIT.java
b/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/FateIT.java
index 540277d96d..3428349a2c 100644
--- a/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/FateIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/FateIT.java
@@ -46,6 +46,7 @@ import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.clientImpl.thrift.TableOperation;
import org.apache.accumulo.core.conf.ConfigurationCopy;
import org.apache.accumulo.core.conf.Property;
+import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.data.NamespaceId;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.fate.AgeOffStore;
@@ -56,6 +57,7 @@ import org.apache.accumulo.core.fate.Repo;
import org.apache.accumulo.core.fate.ZooStore;
import
org.apache.accumulo.core.fate.zookeeper.DistributedReadWriteLock.LockType;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.manager.Manager;
import org.apache.accumulo.manager.tableOps.ManagerRepo;
import org.apache.accumulo.manager.tableOps.TraceRepo;
@@ -179,7 +181,8 @@ public class FateIT {
private static ZooKeeperTestingServer szk = null;
private static ZooReaderWriter zk = null;
- private static final String ZK_ROOT = "/accumulo/" + UUID.randomUUID();
+ private static final InstanceId IID = InstanceId.of(UUID.randomUUID());
+ private static final String ZK_ROOT = ZooUtil.getRoot(IID);
private static final NamespaceId NS = NamespaceId.of("testNameSpace");
private static final TableId TID = TableId.of("testTable");
diff --git
a/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooMutatorIT.java
b/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooMutatorIT.java
index 639c52e02c..bf86086466 100644
---
a/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooMutatorIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooMutatorIT.java
@@ -33,6 +33,7 @@ import java.util.concurrent.Future;
import org.apache.accumulo.core.data.InstanceId;
import org.apache.accumulo.core.fate.zookeeper.ZooReaderWriter;
+import org.apache.accumulo.core.fate.zookeeper.ZooUtil;
import org.apache.accumulo.harness.WithTestNames;
import org.apache.accumulo.test.zookeeper.ZooKeeperTestingServer;
import org.junit.jupiter.api.Tag;
@@ -84,7 +85,8 @@ public class ZooMutatorIT extends WithTestNames {
File newFolder = new File(tempDir, testName() + "/");
assertTrue(newFolder.isDirectory() || newFolder.mkdir(), "failed to create
dir: " + newFolder);
try (ZooKeeperTestingServer szk = new ZooKeeperTestingServer(newFolder)) {
- szk.initPaths("/accumulo/" + InstanceId.of(UUID.randomUUID()));
+ final var iid = InstanceId.of(UUID.randomUUID());
+ szk.initPaths(ZooUtil.getRoot(iid));
ZooReaderWriter zk = szk.getZooReaderWriter();
var executor = Executors.newFixedThreadPool(16);
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/BackupManagerIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/BackupManagerIT.java
index fd9a908d86..5e4067f1bb 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/BackupManagerIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/BackupManagerIT.java
@@ -46,7 +46,7 @@ public class BackupManagerIT extends ConfigurableMacBase {
Process backup = exec(Manager.class);
try (AccumuloClient client =
Accumulo.newClient().from(getClientProperties()).build()) {
ZooReaderWriter writer =
getCluster().getServerContext().getZooReaderWriter();
- String root = "/accumulo/" + client.instanceOperations().getInstanceId();
+ String root = getCluster().getServerContext().getZooKeeperRoot();
// wait for 2 lock entries
var path = ServiceLock.path(root + Constants.ZMANAGER_LOCK);
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/CloneTestIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/CloneTestIT.java
index 06b8adc2c1..b8fc981441 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/CloneTestIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/CloneTestIT.java
@@ -39,6 +39,7 @@ import java.util.TreeSet;
import java.util.regex.Pattern;
import org.apache.accumulo.cluster.AccumuloCluster;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.AccumuloException;
@@ -226,7 +227,6 @@ public class CloneTestIT extends AccumuloClusterHarness {
AccumuloCluster cluster = getCluster();
assumeTrue(cluster instanceof MiniAccumuloClusterImpl);
MiniAccumuloClusterImpl mac = (MiniAccumuloClusterImpl) cluster;
- String rootPath = mac.getConfig().getDir().getAbsolutePath();
// verify that deleting a new table removes the files
c.tableOperations().create(table3);
@@ -234,8 +234,12 @@ public class CloneTestIT extends AccumuloClusterHarness {
c.tableOperations().flush(table3, null, null, true);
// check for files
FileSystem fs = getCluster().getFileSystem();
- String id = c.tableOperations().tableIdMap().get(table3);
- FileStatus[] status = fs.listStatus(new Path(rootPath +
"/accumulo/tables/" + id));
+ final String id = c.tableOperations().tableIdMap().get(table3);
+
+ // the following path expects mini to be configured with a single volume
+ final Path tablePath = new
Path(mac.getSiteConfiguration().get(Property.INSTANCE_VOLUMES)
+ + "/" + Constants.TABLE_DIR + "/" + id);
+ FileStatus[] status = fs.listStatus(tablePath);
assertTrue(status.length > 0);
// verify disk usage
List<DiskUsage> diskUsage =
c.tableOperations().getDiskUsage(Collections.singleton(table3));
@@ -244,7 +248,6 @@ public class CloneTestIT extends AccumuloClusterHarness {
// delete the table
c.tableOperations().delete(table3);
// verify its gone from the file system
- Path tablePath = new Path(rootPath + "/accumulo/tables/" + id);
if (fs.exists(tablePath)) {
status = fs.listStatus(tablePath);
assertTrue(status == null || status.length == 0);
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
index bf8233125c..1e6c36edef 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/GarbageCollectorIT.java
@@ -141,7 +141,9 @@ public class GarbageCollectorIT extends ConfigurableMacBase
{
TestIngest.ingest(c, cluster.getFileSystem(), params);
log.info("Compacting the table {}", table);
c.tableOperations().compact(table, null, null, true, true);
- String pathString = cluster.getConfig().getDir() +
"/accumulo/tables/1/*/*.rf";
+ // the following path expects mini to be configured with a single volume
+ final String pathString =
cluster.getSiteConfiguration().get(Property.INSTANCE_VOLUMES) + "/"
+ + Constants.TABLE_DIR + "/1/*/*.rf";
log.info("Counting files in path: {}", pathString);
int before = countFiles(pathString);
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/TableIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/TableIT.java
index 0f63b9f67d..5bfce9b87d 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/TableIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/TableIT.java
@@ -28,10 +28,12 @@ import java.io.FileNotFoundException;
import java.time.Duration;
import org.apache.accumulo.cluster.AccumuloCluster;
+import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Accumulo;
import org.apache.accumulo.core.client.AccumuloClient;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.admin.TableOperations;
+import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.TableId;
import org.apache.accumulo.core.dataImpl.KeyExtent;
import org.apache.accumulo.core.metadata.AccumuloTable;
@@ -61,7 +63,6 @@ public class TableIT extends AccumuloClusterHarness {
AccumuloCluster cluster = getCluster();
MiniAccumuloClusterImpl mac = (MiniAccumuloClusterImpl) cluster;
- String rootPath = mac.getConfig().getDir().getAbsolutePath();
try (AccumuloClient c =
Accumulo.newClient().from(getClientProps()).build()) {
TableOperations to = c.tableOperations();
@@ -79,12 +80,15 @@ public class TableIT extends AccumuloClusterHarness {
assertTrue(s.stream().findAny().isPresent());
FileSystem fs = getCluster().getFileSystem();
- assertTrue(fs.listStatus(new Path(rootPath + "/accumulo/tables/" +
id)).length > 0);
+ // the following path expects mini to be configured with a single
volume
+ final Path tablePath = new
Path(mac.getSiteConfiguration().get(Property.INSTANCE_VOLUMES)
+ + "/" + Constants.TABLE_DIR + "/" + id);
+ assertTrue(fs.listStatus(tablePath).length > 0);
to.delete(tableName);
assertTrue(s.stream().findAny().isEmpty());
try {
- assertEquals(0, fs.listStatus(new Path(rootPath +
"/accumulo/tables/" + id)).length);
+ assertEquals(0, fs.listStatus(tablePath).length);
} catch (FileNotFoundException ex) {
// that's fine, too
}
diff --git
a/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockIT.java
b/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockIT.java
index 3255ae701e..abaa969827 100644
--- a/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockIT.java
@@ -81,7 +81,8 @@ public class ServiceLockIT {
@BeforeAll
public static void setup() throws Exception {
szk = new ZooKeeperTestingServer(tempDir);
- szk.initPaths("/accumulo/" + InstanceId.of(UUID.randomUUID()));
+ final var iid = InstanceId.of(UUID.randomUUID());
+ szk.initPaths(ZooUtil.getRoot(iid));
}
@AfterAll