This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new e725cfed7d Modified ServiceLockPaths.get method to return paths with
or w/out lock (#4891)
e725cfed7d is described below
commit e725cfed7d98af4941775fa5ae5b92dd3229e11d
Author: Dave Marion <[email protected]>
AuthorDate: Tue Oct 1 10:47:27 2024 -0400
Modified ServiceLockPaths.get method to return paths with or w/out lock
(#4891)
Closes #4883
---
.../accumulo/core/clientImpl/ClientContext.java | 4 +-
.../core/clientImpl/InstanceOperationsImpl.java | 2 +-
.../core/clientImpl/ZookeeperLockChecker.java | 13 +-
.../accumulo/core/lock/ServiceLockPaths.java | 67 +++--
.../core/metadata/schema/TabletMetadata.java | 2 +-
.../accumulo/core/rpc/clients/TServerClient.java | 8 +-
.../util/compaction/ExternalCompactionUtil.java | 6 +-
.../core/clientImpl/ZookeeperLockCheckerTest.java | 15 +-
.../accumulo/core/lock/ServiceLockPathsTest.java | 284 ++++++++++++++++-----
.../miniclusterImpl/MiniAccumuloClusterImpl.java | 10 +-
.../accumulo/server/manager/LiveTServerSet.java | 16 +-
.../server/manager/state/DeadServerList.java | 2 +-
.../accumulo/server/util/AccumuloStatus.java | 8 +-
.../org/apache/accumulo/server/util/Admin.java | 2 +-
.../accumulo/server/util/ServiceStatusCmd.java | 6 +-
.../accumulo/server/util/TabletServerLocks.java | 4 +-
.../org/apache/accumulo/server/util/ZooZap.java | 6 +-
.../java/org/apache/accumulo/manager/Manager.java | 4 +-
.../test/ScanServerConcurrentTabletScanIT.java | 2 +-
.../test/ScanServerGroupConfigurationIT.java | 6 +-
.../org/apache/accumulo/test/ScanServerIT.java | 2 +-
.../accumulo/test/ScanServerMetadataEntriesIT.java | 2 +-
.../accumulo/test/ScanServerMultipleScansIT.java | 2 +-
.../apache/accumulo/test/ScanServerShutdownIT.java | 4 +-
.../ThriftServerBindsBeforeZooKeeperLockIT.java | 4 +-
.../test/functional/MemoryStarvedScanIT.java | 2 +-
.../functional/TabletManagementIteratorIT.java | 2 +-
.../functional/TabletResourceGroupBalanceIT.java | 2 +-
.../accumulo/test/lock/ServiceLockPathsIT.java | 67 ++---
29 files changed, 368 insertions(+), 186 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 cbe3b6fc41..83fdd4a0c9 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
@@ -406,7 +406,7 @@ public class ClientContext implements AccumuloClient {
public Map<String,Pair<UUID,String>> getScanServers() {
Map<String,Pair<UUID,String>> liveScanServers = new HashMap<>();
Set<ServiceLockPath> scanServerPaths =
- getServerPaths().getScanServer(Optional.empty(), Optional.empty());
+ getServerPaths().getScanServer(Optional.empty(), Optional.empty(),
true);
for (ServiceLockPath path : scanServerPaths) {
try {
ZcStat stat = new ZcStat();
@@ -483,7 +483,7 @@ public class ClientContext implements AccumuloClient {
*/
public List<String> getManagerLocations() {
ensureOpen();
- var zLockManagerPath = getServerPaths().getManager();
+ var zLockManagerPath = getServerPaths().getManager(true);
Timer timer = null;
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
index 23483d4a54..a6e7d25fbc 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/InstanceOperationsImpl.java
@@ -236,7 +236,7 @@ public class InstanceOperationsImpl implements
InstanceOperations {
@Override
public List<String> getTabletServers() {
Set<ServiceLockPath> paths =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true);
List<String> results = new ArrayList<>();
paths.forEach(p -> {
if (!p.getServer().equals("manager")) {
diff --git
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ZookeeperLockChecker.java
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ZookeeperLockChecker.java
index ab9ee142ea..e91b64ea4b 100644
---
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ZookeeperLockChecker.java
+++
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ZookeeperLockChecker.java
@@ -21,7 +21,6 @@ package org.apache.accumulo.core.clientImpl;
import java.util.Optional;
import java.util.Set;
-import org.apache.accumulo.core.Constants;
import
org.apache.accumulo.core.clientImpl.ClientTabletCacheImpl.TabletServerLockChecker;
import org.apache.accumulo.core.lock.ServiceLock;
import org.apache.accumulo.core.lock.ServiceLockPaths.ServiceLockPath;
@@ -31,17 +30,15 @@ import com.google.common.net.HostAndPort;
public class ZookeeperLockChecker implements TabletServerLockChecker {
private final ClientContext ctx;
- private final String root;
ZookeeperLockChecker(ClientContext context) {
this.ctx = context;
- this.root = context.getZooKeeperRoot() + Constants.ZTSERVERS;
}
public boolean doesTabletServerLockExist(String server) {
// ServiceLockPaths only returns items that have a lock
Set<ServiceLockPath> tservers =
ctx.getServerPaths().getTabletServer(Optional.empty(),
- Optional.of(HostAndPort.fromString(server)));
+ Optional.of(HostAndPort.fromString(server)), true);
return !tservers.isEmpty();
}
@@ -49,7 +46,7 @@ public class ZookeeperLockChecker implements
TabletServerLockChecker {
public boolean isLockHeld(String server, String session) {
// ServiceLockPaths only returns items that have a lock
Set<ServiceLockPath> tservers =
ctx.getServerPaths().getTabletServer(Optional.empty(),
- Optional.of(HostAndPort.fromString(server)));
+ Optional.of(HostAndPort.fromString(server)), true);
for (ServiceLockPath slp : tservers) {
if (ServiceLock.getSessionId(ctx.getZooCache(), slp) ==
Long.parseLong(session, 16)) {
return true;
@@ -60,7 +57,11 @@ public class ZookeeperLockChecker implements
TabletServerLockChecker {
@Override
public void invalidateCache(String tserver) {
- ctx.getZooCache().clear(root + "/" + tserver);
+ ctx.getServerPaths()
+ .getTabletServer(Optional.empty(),
Optional.of(HostAndPort.fromString(tserver)), false)
+ .forEach(slp -> {
+ ctx.getZooCache().clear(slp.toString());
+ });
}
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
index 5acdb9ef4e..62da673356 100644
--- a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
+++ b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java
@@ -283,12 +283,13 @@ public class ServiceLockPaths {
}
public Set<ServiceLockPath> getCompactor(Optional<String> resourceGroup,
- Optional<HostAndPort> address) {
- return get(Constants.ZCOMPACTORS, resourceGroup, address);
+ Optional<HostAndPort> address, boolean withLock) {
+ return get(Constants.ZCOMPACTORS, resourceGroup, address, withLock);
}
- public ServiceLockPath getGarbageCollector() {
- Set<ServiceLockPath> results = get(Constants.ZGC_LOCK, Optional.empty(),
Optional.empty());
+ public ServiceLockPath getGarbageCollector(boolean withLock) {
+ Set<ServiceLockPath> results =
+ get(Constants.ZGC_LOCK, Optional.empty(), Optional.empty(), withLock);
if (results.isEmpty()) {
return null;
} else {
@@ -296,8 +297,9 @@ public class ServiceLockPaths {
}
}
- public ServiceLockPath getManager() {
- Set<ServiceLockPath> results = get(Constants.ZMANAGER_LOCK,
Optional.empty(), Optional.empty());
+ public ServiceLockPath getManager(boolean withLock) {
+ Set<ServiceLockPath> results =
+ get(Constants.ZMANAGER_LOCK, Optional.empty(), Optional.empty(),
withLock);
if (results.isEmpty()) {
return null;
} else {
@@ -305,8 +307,9 @@ public class ServiceLockPaths {
}
}
- public ServiceLockPath getMonitor() {
- Set<ServiceLockPath> results = get(Constants.ZMONITOR_LOCK,
Optional.empty(), Optional.empty());
+ public ServiceLockPath getMonitor(boolean withLock) {
+ Set<ServiceLockPath> results =
+ get(Constants.ZMONITOR_LOCK, Optional.empty(), Optional.empty(),
withLock);
if (results.isEmpty()) {
return null;
} else {
@@ -315,26 +318,34 @@ public class ServiceLockPaths {
}
public Set<ServiceLockPath> getScanServer(Optional<String> resourceGroup,
- Optional<HostAndPort> address) {
- return get(Constants.ZSSERVERS, resourceGroup, address);
+ Optional<HostAndPort> address, boolean withLock) {
+ return get(Constants.ZSSERVERS, resourceGroup, address, withLock);
}
public Set<ServiceLockPath> getTabletServer(Optional<String> resourceGroup,
- Optional<HostAndPort> address) {
- return get(Constants.ZTSERVERS, resourceGroup, address);
+ Optional<HostAndPort> address, boolean withLock) {
+ return get(Constants.ZTSERVERS, resourceGroup, address, withLock);
}
public Set<ServiceLockPath> getDeadTabletServer(Optional<String>
resourceGroup,
- Optional<HostAndPort> address) {
- return get(Constants.ZDEADTSERVERS, resourceGroup, address);
+ Optional<HostAndPort> address, boolean withLock) {
+ return get(Constants.ZDEADTSERVERS, resourceGroup, address, withLock);
}
/**
* Find paths in ZooKeeper based on the input arguments and return a set of
ServiceLockPath
- * objects at those paths that have valid locks.
+ * objects.
+ *
+ * @param serverType type of lock, should be something like
Constants.ZTSERVERS or
+ * Constants.ZMANAGER_LOCK
+ * @param resourceGroup name of resource group, if empty will return all
resource groups
+ * @param address address of server (host:port), if empty will return all
addresses
+ * @param withLock supply true if you only want to return servers that have
an active lock. Not
+ * applicable for types that don't use a lock (e.g. dead tservers)
+ * @return set of ServiceLockPath objects for the paths found based on the
search criteria
*/
private Set<ServiceLockPath> get(final String serverType, Optional<String>
resourceGroup,
- Optional<HostAndPort> address) {
+ Optional<HostAndPort> address, boolean withLock) {
Objects.requireNonNull(serverType);
Objects.requireNonNull(resourceGroup);
@@ -348,9 +359,13 @@ public class ServiceLockPaths {
|| serverType.equals(Constants.ZMONITOR_LOCK)) {
final ZcStat stat = new ZcStat();
final ServiceLockPath slp = parse(Optional.of(serverType), typePath);
- Optional<ServiceLockData> sld = ServiceLock.getLockData(cache, slp,
stat);
- if (!sld.isEmpty()) {
+ if (!withLock) {
results.add(slp);
+ } else {
+ Optional<ServiceLockData> sld = ServiceLock.getLockData(cache, slp,
stat);
+ if (!sld.isEmpty()) {
+ results.add(slp);
+ }
}
} else if (serverType.equals(Constants.ZCOMPACTORS) ||
serverType.equals(Constants.ZSSERVERS)
|| serverType.equals(Constants.ZTSERVERS) ||
serverType.equals(Constants.ZDEADTSERVERS)) {
@@ -362,15 +377,15 @@ public class ServiceLockPaths {
final ZcStat stat = new ZcStat();
final ServiceLockPath slp =
parse(Optional.of(serverType), typePath + "/" + group + "/" +
server);
- if (slp.getType().equals(Constants.ZDEADTSERVERS)
- && (address.isEmpty() ||
address.orElseThrow().toString().equals(server))) {
- // Dead TServers don't have lock data
- results.add(slp);
- } else {
- Optional<ServiceLockData> sld = ServiceLock.getLockData(cache,
slp, stat);
- if (!sld.isEmpty()
- && (address.isEmpty() ||
address.orElseThrow().toString().equals(server))) {
+ if (address.isEmpty() ||
address.orElseThrow().toString().equals(server)) {
+ if (!withLock || slp.getType().equals(Constants.ZDEADTSERVERS)) {
+ // Dead TServers don't have lock data
results.add(slp);
+ } else {
+ Optional<ServiceLockData> sld = ServiceLock.getLockData(cache,
slp, stat);
+ if (!sld.isEmpty()) {
+ results.add(slp);
+ }
}
}
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
index 2fdef63f9c..f3e61aadd1 100644
---
a/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
+++
b/core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletMetadata.java
@@ -634,7 +634,7 @@ public class TabletMetadata {
final Set<TServerInstance> liveServers = new HashSet<>();
for (ServiceLockPath slp :
context.getServerPaths().getTabletServer(Optional.empty(),
- Optional.empty())) {
+ Optional.empty(), true)) {
checkTabletServer(context, slp).ifPresent(liveServers::add);
}
diff --git
a/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
b/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
index 7107a5a71a..2c70796095 100644
--- a/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
+++ b/core/src/main/java/org/apache/accumulo/core/rpc/clients/TServerClient.java
@@ -74,10 +74,12 @@ public interface TServerClient<C extends TServiceClient> {
final long rpcTimeout = context.getClientTimeoutInMillis();
final ZooCache zc = context.getZooCache();
final List<ServiceLockPath> serverPaths = new ArrayList<>();
- serverPaths.addAll(context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty()));
-
serverPaths.addAll(context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty()));
serverPaths
- .addAll(context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty()));
+ .addAll(context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty(), true));
+ serverPaths
+ .addAll(context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty(), true));
+ serverPaths
+ .addAll(context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true));
if (serverPaths.isEmpty()) {
if (warned.compareAndSet(false, true)) {
LOG.warn(
diff --git
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
index 8b8fd6ac39..72a70ce106 100644
---
a/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
+++
b/core/src/main/java/org/apache/accumulo/core/util/compaction/ExternalCompactionUtil.java
@@ -115,7 +115,7 @@ public class ExternalCompactionUtil {
*/
public static Map<String,Set<HostAndPort>> getCompactorAddrs(ClientContext
context) {
final Map<String,Set<HostAndPort>> groupsAndAddresses = new HashMap<>();
- context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty()).forEach(slp -> {
+ context.getServerPaths().getCompactor(Optional.empty(), Optional.empty(),
true).forEach(slp -> {
groupsAndAddresses.computeIfAbsent(slp.getResourceGroup(), (k) -> new
HashSet<>())
.add(HostAndPort.fromString(slp.getServer()));
});
@@ -256,8 +256,8 @@ public class ExternalCompactionUtil {
public static int countCompactors(String groupName, ClientContext context) {
var start = Timer.startNew();
- int count =
- context.getServerPaths().getCompactor(Optional.of(groupName),
Optional.empty()).size();
+ int count = context.getServerPaths()
+ .getCompactor(Optional.of(groupName), Optional.empty(), true).size();
long elapsed = start.elapsed(MILLISECONDS);
if (elapsed > 100) {
LOG.debug("Took {} ms to count {} compactors for {}", elapsed, count,
groupName);
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..ed2b6aa3e4 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
@@ -23,8 +23,11 @@ import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
+import java.util.List;
+
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.fate.zookeeper.ZooCache;
+import org.apache.accumulo.core.lock.ServiceLockPaths;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -39,13 +42,23 @@ public class ZookeeperLockCheckerTest {
expect(context.getZooKeeperRoot()).andReturn("/accumulo/iid").anyTimes();
zc = createMock(ZooCache.class);
expect(context.getZooCache()).andReturn(zc).anyTimes();
+ expect(context.getServerPaths()).andReturn(new
ServiceLockPaths(context)).anyTimes();
replay(context);
zklc = new ZookeeperLockChecker(context);
}
@Test
public void testInvalidateCache() {
- zc.clear(context.getZooKeeperRoot() + Constants.ZTSERVERS + "/server");
+
expect(zc.getChildren(context.getZooKeeperRoot())).andReturn(List.of(Constants.ZTSERVERS))
+ .anyTimes();
+ expect(zc.getChildren(context.getZooKeeperRoot() + Constants.ZTSERVERS))
+ .andReturn(List.of(Constants.DEFAULT_RESOURCE_GROUP_NAME)).anyTimes();
+ expect(zc.getChildren(context.getZooKeeperRoot() + Constants.ZTSERVERS +
"/"
+ +
Constants.DEFAULT_RESOURCE_GROUP_NAME)).andReturn(List.of("server")).anyTimes();
+ expect(zc.getChildren(context.getZooKeeperRoot() + Constants.ZTSERVERS +
"/"
+ + Constants.DEFAULT_RESOURCE_GROUP_NAME +
"/server")).andReturn(List.of()).anyTimes();
+ zc.clear(context.getZooKeeperRoot() + Constants.ZTSERVERS + "/"
+ + Constants.DEFAULT_RESOURCE_GROUP_NAME + "/server");
replay(zc);
zklc.invalidateCache("server");
verify(zc);
diff --git
a/core/src/test/java/org/apache/accumulo/core/lock/ServiceLockPathsTest.java
b/core/src/test/java/org/apache/accumulo/core/lock/ServiceLockPathsTest.java
index 255a6c4356..51da0571d1 100644
--- a/core/src/test/java/org/apache/accumulo/core/lock/ServiceLockPathsTest.java
+++ b/core/src/test/java/org/apache/accumulo/core/lock/ServiceLockPathsTest.java
@@ -56,6 +56,7 @@ public class ServiceLockPathsTest {
private static final String ROOT = "/accumulo/instance_id";
private static final String TEST_RESOURCE_GROUP = "TEST_RG";
private static final String HOSTNAME = "localhost:9876";
+ private static final String HOSTNAME_NO_LOCK = "localhost:9877";
private static final HostAndPort hp = HostAndPort.fromString(HOSTNAME);
@Test
@@ -146,13 +147,37 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- ServiceLockPath slp = ctx.getServerPaths().getGarbageCollector();
+ ServiceLockPath slp = ctx.getServerPaths().getGarbageCollector(true);
assertNull(slp);
EasyMock.verify(ctx, zc);
}
+ @Test
+ public void testGetGarbageCollectorNoLock() {
+
+ ClientContext ctx = EasyMock.createMock(ClientContext.class);
+ ZooCache zc = EasyMock.createMock(ZooCache.class);
+
+ EasyMock.expect(ctx.getZooKeeperRoot()).andReturn(ROOT).anyTimes();
+ EasyMock.expect(ctx.getZooCache()).andReturn(zc).anyTimes();
+ EasyMock.expect(zc.getChildren(ROOT +
ZGC_LOCK)).andReturn(List.of(HOSTNAME_NO_LOCK))
+ .anyTimes();
+ EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
+ EasyMock.replay(ctx, zc);
+
+ ServiceLockPath slp = ctx.getServerPaths().getGarbageCollector(false);
+ assertNotNull(slp);
+ assertNull(slp.getServer());
+ assertNull(slp.getResourceGroup());
+ assertEquals(ZGC_LOCK, slp.getType());
+ assertEquals(ROOT + ZGC_LOCK, slp.toString());
+
+ EasyMock.verify(ctx, zc);
+
+ }
+
@Test
public void testGetGarbageCollector() {
@@ -175,7 +200,7 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- ServiceLockPath slp = ctx.getServerPaths().getGarbageCollector();
+ ServiceLockPath slp = ctx.getServerPaths().getGarbageCollector(true);
assertNotNull(slp);
assertNull(slp.getServer());
assertNull(slp.getResourceGroup());
@@ -198,13 +223,37 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- ServiceLockPath slp = ctx.getServerPaths().getManager();
+ ServiceLockPath slp = ctx.getServerPaths().getManager(true);
assertNull(slp);
EasyMock.verify(ctx, zc);
}
+ @Test
+ public void testGetManagerNoLock() {
+
+ ClientContext ctx = EasyMock.createMock(ClientContext.class);
+ ZooCache zc = EasyMock.createMock(ZooCache.class);
+
+ EasyMock.expect(ctx.getZooKeeperRoot()).andReturn(ROOT).anyTimes();
+ EasyMock.expect(ctx.getZooCache()).andReturn(zc).anyTimes();
+ EasyMock.expect(zc.getChildren(ROOT +
ZMANAGER_LOCK)).andReturn(List.of(HOSTNAME_NO_LOCK))
+ .anyTimes();
+ EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
+ EasyMock.replay(ctx, zc);
+
+ ServiceLockPath slp = ctx.getServerPaths().getManager(false);
+ assertNotNull(slp);
+ assertNull(slp.getServer());
+ assertNull(slp.getResourceGroup());
+ assertEquals(ZMANAGER_LOCK, slp.getType());
+ assertEquals(ROOT + ZMANAGER_LOCK, slp.toString());
+
+ EasyMock.verify(ctx, zc);
+
+ }
+
@Test
public void testGetManager() {
@@ -228,7 +277,7 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- ServiceLockPath slp = ctx.getServerPaths().getManager();
+ ServiceLockPath slp = ctx.getServerPaths().getManager(true);
assertNotNull(slp);
assertNull(slp.getServer());
assertNull(slp.getResourceGroup());
@@ -251,13 +300,37 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- ServiceLockPath slp = ctx.getServerPaths().getMonitor();
+ ServiceLockPath slp = ctx.getServerPaths().getMonitor(true);
assertNull(slp);
EasyMock.verify(ctx, zc);
}
+ @Test
+ public void testGetMonitorNoLock() {
+
+ ClientContext ctx = EasyMock.createMock(ClientContext.class);
+ ZooCache zc = EasyMock.createMock(ZooCache.class);
+
+ EasyMock.expect(ctx.getZooKeeperRoot()).andReturn(ROOT).anyTimes();
+ EasyMock.expect(ctx.getZooCache()).andReturn(zc).anyTimes();
+ EasyMock.expect(zc.getChildren(ROOT +
ZMONITOR_LOCK)).andReturn(List.of(HOSTNAME_NO_LOCK))
+ .anyTimes();
+ EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
+ EasyMock.replay(ctx, zc);
+
+ ServiceLockPath slp = ctx.getServerPaths().getMonitor(false);
+ assertNotNull(slp);
+ assertNull(slp.getServer());
+ assertNull(slp.getResourceGroup());
+ assertEquals(ZMONITOR_LOCK, slp.getType());
+ assertEquals(ROOT + ZMONITOR_LOCK, slp.toString());
+
+ EasyMock.verify(ctx, zc);
+
+ }
+
@Test
public void testGetMonitor() {
@@ -281,7 +354,7 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- ServiceLockPath slp = ctx.getServerPaths().getMonitor();
+ ServiceLockPath slp = ctx.getServerPaths().getMonitor(true);
assertNotNull(slp);
assertNull(slp.getServer());
assertNull(slp.getResourceGroup());
@@ -304,14 +377,16 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- assertThrows(NullPointerException.class, () ->
ctx.getServerPaths().getCompactor(null, null));
assertThrows(NullPointerException.class,
- () ->
ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP), null));
- assertTrue(ctx.getServerPaths().getCompactor(Optional.empty(),
Optional.empty()).isEmpty());
-
assertTrue(ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty())
- .isEmpty());
-
assertTrue(ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp))
- .isEmpty());
+ () -> ctx.getServerPaths().getCompactor(null, null, true));
+ assertThrows(NullPointerException.class,
+ () ->
ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP), null,
true));
+ assertTrue(
+ ctx.getServerPaths().getCompactor(Optional.empty(), Optional.empty(),
true).isEmpty());
+ assertTrue(ctx.getServerPaths()
+ .getCompactor(Optional.of(TEST_RESOURCE_GROUP), Optional.empty(),
true).isEmpty());
+ assertTrue(ctx.getServerPaths()
+ .getCompactor(Optional.of(TEST_RESOURCE_GROUP), Optional.of(hp),
true).isEmpty());
EasyMock.verify(ctx, zc);
@@ -336,9 +411,17 @@ public class ServiceLockPathsTest {
EasyMock.expect(zc.getChildren(ROOT + ZCOMPACTORS))
.andReturn(List.of(TEST_RESOURCE_GROUP,
DEFAULT_RESOURCE_GROUP_NAME)).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZCOMPACTORS + "/" +
TEST_RESOURCE_GROUP))
- .andReturn(List.of(HOSTNAME)).anyTimes();
+ .andReturn(List.of(HOSTNAME, HOSTNAME_NO_LOCK)).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZCOMPACTORS + "/" +
DEFAULT_RESOURCE_GROUP_NAME))
- .andReturn(List.of(HOSTNAME)).anyTimes();
+ .andReturn(List.of(HOSTNAME, HOSTNAME_NO_LOCK)).anyTimes();
+ EasyMock
+ .expect(
+ zc.getChildren(ROOT + ZCOMPACTORS + "/" + TEST_RESOURCE_GROUP +
"/" + HOSTNAME_NO_LOCK))
+ .andReturn(List.of()).anyTimes();
+ EasyMock
+ .expect(zc.getChildren(
+ ROOT + ZCOMPACTORS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/" +
HOSTNAME_NO_LOCK))
+ .andReturn(List.of()).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZCOMPACTORS + "/" +
TEST_RESOURCE_GROUP + "/" + HOSTNAME))
.andReturn(List.of(svcLock1, svcLock2)).anyTimes();
EasyMock
@@ -358,7 +441,24 @@ public class ServiceLockPathsTest {
// query for all
Set<ServiceLockPath> results =
- ctx.getServerPaths().getCompactor(Optional.empty(), Optional.empty());
+ ctx.getServerPaths().getCompactor(Optional.empty(), Optional.empty(),
false);
+ assertEquals(4, results.size());
+ for (ServiceLockPath path : results) {
+ assertEquals(ZCOMPACTORS, path.getType());
+ assertTrue(path.getServer().equals(HOSTNAME) ||
path.getServer().equals(HOSTNAME_NO_LOCK));
+ assertTrue(path.getResourceGroup().equals(DEFAULT_RESOURCE_GROUP_NAME)
+ || path.getResourceGroup().equals(TEST_RESOURCE_GROUP));
+ assertTrue(path.toString()
+ .equals(ROOT + ZCOMPACTORS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/"
+ HOSTNAME)
+ || path.toString().equals(
+ ROOT + ZCOMPACTORS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/" +
HOSTNAME_NO_LOCK)
+ || path.toString().equals(ROOT + ZCOMPACTORS + "/" +
TEST_RESOURCE_GROUP + "/" + HOSTNAME)
+ || path.toString()
+ .equals(ROOT + ZCOMPACTORS + "/" + TEST_RESOURCE_GROUP + "/" +
HOSTNAME_NO_LOCK));
+ }
+
+ // query for all with locks
+ results = ctx.getServerPaths().getCompactor(Optional.empty(),
Optional.empty(), true);
assertEquals(2, results.size());
Iterator<ServiceLockPath> iter = results.iterator();
ServiceLockPath slp1 = iter.next();
@@ -387,12 +487,13 @@ public class ServiceLockPathsTest {
}
// query for all in non-existent resource group
- results =
- ctx.getServerPaths().getCompactor(Optional.of("FAKE_RESOURCE_GROUP"),
Optional.empty());
+ results =
ctx.getServerPaths().getCompactor(Optional.of("FAKE_RESOURCE_GROUP"),
+ Optional.empty(), true);
assertEquals(0, results.size());
// query for all in test resource group
- results =
ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty());
+ results =
+ ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty(), true);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -402,7 +503,8 @@ public class ServiceLockPathsTest {
assertEquals(ROOT + ZCOMPACTORS + "/" + TEST_RESOURCE_GROUP + "/" +
HOSTNAME, slp1.toString());
// query for a specific server
- results =
ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp));
+ results =
+ ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp), true);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -413,7 +515,7 @@ public class ServiceLockPathsTest {
// query for a wrong server
results =
ctx.getServerPaths().getCompactor(Optional.of(TEST_RESOURCE_GROUP),
- Optional.of(HostAndPort.fromString("localhost:1234")));
+ Optional.of(HostAndPort.fromString("localhost:1234")), true);
assertEquals(0, results.size());
EasyMock.verify(ctx, zc);
@@ -432,14 +534,16 @@ public class ServiceLockPathsTest {
EasyMock.expect(ctx.getServerPaths()).andReturn(new
ServiceLockPaths(ctx)).anyTimes();
EasyMock.replay(ctx, zc);
- assertThrows(NullPointerException.class, () ->
ctx.getServerPaths().getScanServer(null, null));
assertThrows(NullPointerException.class,
- () ->
ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP), null));
- assertTrue(ctx.getServerPaths().getScanServer(Optional.empty(),
Optional.empty()).isEmpty());
+ () -> ctx.getServerPaths().getScanServer(null, null, true));
+ assertThrows(NullPointerException.class,
+ () ->
ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP), null,
true));
+ assertTrue(
+ ctx.getServerPaths().getScanServer(Optional.empty(), Optional.empty(),
true).isEmpty());
assertTrue(ctx.getServerPaths()
- .getScanServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty()).isEmpty());
-
assertTrue(ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp))
- .isEmpty());
+ .getScanServer(Optional.of(TEST_RESOURCE_GROUP), Optional.empty(),
true).isEmpty());
+ assertTrue(ctx.getServerPaths()
+ .getScanServer(Optional.of(TEST_RESOURCE_GROUP), Optional.of(hp),
true).isEmpty());
EasyMock.verify(ctx, zc);
@@ -464,9 +568,17 @@ public class ServiceLockPathsTest {
EasyMock.expect(zc.getChildren(ROOT + ZSSERVERS))
.andReturn(List.of(TEST_RESOURCE_GROUP,
DEFAULT_RESOURCE_GROUP_NAME)).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZSSERVERS + "/" +
TEST_RESOURCE_GROUP))
- .andReturn(List.of(HOSTNAME)).anyTimes();
+ .andReturn(List.of(HOSTNAME, HOSTNAME_NO_LOCK)).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZSSERVERS + "/" +
DEFAULT_RESOURCE_GROUP_NAME))
- .andReturn(List.of(HOSTNAME)).anyTimes();
+ .andReturn(List.of(HOSTNAME, HOSTNAME_NO_LOCK)).anyTimes();
+ EasyMock
+ .expect(
+ zc.getChildren(ROOT + ZSSERVERS + "/" + TEST_RESOURCE_GROUP + "/"
+ HOSTNAME_NO_LOCK))
+ .andReturn(List.of()).anyTimes();
+ EasyMock
+ .expect(zc.getChildren(
+ ROOT + ZSSERVERS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/" +
HOSTNAME_NO_LOCK))
+ .andReturn(List.of()).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZSSERVERS + "/" +
TEST_RESOURCE_GROUP + "/" + HOSTNAME))
.andReturn(List.of(svcLock1, svcLock2)).anyTimes();
EasyMock
@@ -485,7 +597,24 @@ public class ServiceLockPathsTest {
// query for all
Set<ServiceLockPath> results =
- ctx.getServerPaths().getScanServer(Optional.empty(), Optional.empty());
+ ctx.getServerPaths().getScanServer(Optional.empty(), Optional.empty(),
false);
+ assertEquals(4, results.size());
+ for (ServiceLockPath path : results) {
+ assertEquals(ZSSERVERS, path.getType());
+ assertTrue(path.getServer().equals(HOSTNAME) ||
path.getServer().equals(HOSTNAME_NO_LOCK));
+ assertTrue(path.getResourceGroup().equals(DEFAULT_RESOURCE_GROUP_NAME)
+ || path.getResourceGroup().equals(TEST_RESOURCE_GROUP));
+ assertTrue(path.toString()
+ .equals(ROOT + ZSSERVERS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/" +
HOSTNAME)
+ || path.toString()
+ .equals(ROOT + ZSSERVERS + "/" + DEFAULT_RESOURCE_GROUP_NAME +
"/" + HOSTNAME_NO_LOCK)
+ || path.toString().equals(ROOT + ZSSERVERS + "/" +
TEST_RESOURCE_GROUP + "/" + HOSTNAME)
+ || path.toString()
+ .equals(ROOT + ZSSERVERS + "/" + TEST_RESOURCE_GROUP + "/" +
HOSTNAME_NO_LOCK));
+ }
+
+ // query for all with lock
+ results = ctx.getServerPaths().getScanServer(Optional.empty(),
Optional.empty(), true);
assertEquals(2, results.size());
Iterator<ServiceLockPath> iter = results.iterator();
ServiceLockPath slp1 = iter.next();
@@ -512,13 +641,13 @@ public class ServiceLockPathsTest {
}
// query for all in non-existent resource group
- results =
- ctx.getServerPaths().getScanServer(Optional.of("FAKE_RESOURCE_GROUP"),
Optional.empty());
+ results =
ctx.getServerPaths().getScanServer(Optional.of("FAKE_RESOURCE_GROUP"),
+ Optional.empty(), true);
assertEquals(0, results.size());
// query for all in test resource group
- results =
- ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty());
+ results =
ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty(),
+ true);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -528,7 +657,8 @@ public class ServiceLockPathsTest {
assertEquals(ROOT + ZSSERVERS + "/" + TEST_RESOURCE_GROUP + "/" +
HOSTNAME, slp1.toString());
// query for a specific server
- results =
ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp));
+ results =
+ ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp), true);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -539,7 +669,7 @@ public class ServiceLockPathsTest {
// query for a wrong server
results =
ctx.getServerPaths().getScanServer(Optional.of(TEST_RESOURCE_GROUP),
- Optional.of(HostAndPort.fromString("localhost:1234")));
+ Optional.of(HostAndPort.fromString("localhost:1234")), true);
assertEquals(0, results.size());
EasyMock.verify(ctx, zc);
@@ -559,14 +689,15 @@ public class ServiceLockPathsTest {
EasyMock.replay(ctx, zc);
assertThrows(NullPointerException.class,
- () -> ctx.getServerPaths().getTabletServer(null, null));
+ () -> ctx.getServerPaths().getTabletServer(null, null, true));
assertThrows(NullPointerException.class,
- () ->
ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP), null));
- assertTrue(ctx.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty()).isEmpty());
+ () ->
ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP), null,
true));
+ assertTrue(
+ ctx.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true).isEmpty());
assertTrue(ctx.getServerPaths()
- .getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty()).isEmpty());
+ .getTabletServer(Optional.of(TEST_RESOURCE_GROUP), Optional.empty(),
true).isEmpty());
assertTrue(ctx.getServerPaths()
- .getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp)).isEmpty());
+ .getTabletServer(Optional.of(TEST_RESOURCE_GROUP), Optional.of(hp),
true).isEmpty());
EasyMock.verify(ctx, zc);
@@ -591,9 +722,17 @@ public class ServiceLockPathsTest {
EasyMock.expect(zc.getChildren(ROOT + ZTSERVERS))
.andReturn(List.of(TEST_RESOURCE_GROUP,
DEFAULT_RESOURCE_GROUP_NAME)).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZTSERVERS + "/" +
TEST_RESOURCE_GROUP))
- .andReturn(List.of(HOSTNAME)).anyTimes();
+ .andReturn(List.of(HOSTNAME, HOSTNAME_NO_LOCK)).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZTSERVERS + "/" +
DEFAULT_RESOURCE_GROUP_NAME))
- .andReturn(List.of(HOSTNAME)).anyTimes();
+ .andReturn(List.of(HOSTNAME, HOSTNAME_NO_LOCK)).anyTimes();
+ EasyMock
+ .expect(
+ zc.getChildren(ROOT + ZTSERVERS + "/" + TEST_RESOURCE_GROUP + "/"
+ HOSTNAME_NO_LOCK))
+ .andReturn(List.of()).anyTimes();
+ EasyMock
+ .expect(zc.getChildren(
+ ROOT + ZTSERVERS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/" +
HOSTNAME_NO_LOCK))
+ .andReturn(List.of()).anyTimes();
EasyMock.expect(zc.getChildren(ROOT + ZTSERVERS + "/" +
TEST_RESOURCE_GROUP + "/" + HOSTNAME))
.andReturn(List.of(svcLock1, svcLock2)).anyTimes();
EasyMock
@@ -612,7 +751,24 @@ public class ServiceLockPathsTest {
// query for all
Set<ServiceLockPath> results =
- ctx.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ ctx.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), false);
+ assertEquals(4, results.size());
+ for (ServiceLockPath path : results) {
+ assertEquals(ZTSERVERS, path.getType());
+ assertTrue(path.getServer().equals(HOSTNAME) ||
path.getServer().equals(HOSTNAME_NO_LOCK));
+ assertTrue(path.getResourceGroup().equals(DEFAULT_RESOURCE_GROUP_NAME)
+ || path.getResourceGroup().equals(TEST_RESOURCE_GROUP));
+ assertTrue(path.toString()
+ .equals(ROOT + ZTSERVERS + "/" + DEFAULT_RESOURCE_GROUP_NAME + "/" +
HOSTNAME)
+ || path.toString()
+ .equals(ROOT + ZTSERVERS + "/" + DEFAULT_RESOURCE_GROUP_NAME +
"/" + HOSTNAME_NO_LOCK)
+ || path.toString().equals(ROOT + ZTSERVERS + "/" +
TEST_RESOURCE_GROUP + "/" + HOSTNAME)
+ || path.toString()
+ .equals(ROOT + ZTSERVERS + "/" + TEST_RESOURCE_GROUP + "/" +
HOSTNAME_NO_LOCK));
+ }
+
+ // query for all with lock
+ results = ctx.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true);
assertEquals(2, results.size());
Iterator<ServiceLockPath> iter = results.iterator();
ServiceLockPath slp1 = iter.next();
@@ -639,13 +795,13 @@ public class ServiceLockPathsTest {
}
// query for all in non-existent resource group
- results =
-
ctx.getServerPaths().getTabletServer(Optional.of("FAKE_RESOURCE_GROUP"),
Optional.empty());
+ results =
ctx.getServerPaths().getTabletServer(Optional.of("FAKE_RESOURCE_GROUP"),
+ Optional.empty(), true);
assertEquals(0, results.size());
// query for all in test resource group
- results =
- ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty());
+ results =
ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
+ Optional.empty(), true);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -655,8 +811,8 @@ public class ServiceLockPathsTest {
assertEquals(ROOT + ZTSERVERS + "/" + TEST_RESOURCE_GROUP + "/" +
HOSTNAME, slp1.toString());
// query for a specific server
- results =
- ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp));
+ results =
ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
+ Optional.of(hp), true);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -667,7 +823,7 @@ public class ServiceLockPathsTest {
// query for a wrong server
results =
ctx.getServerPaths().getTabletServer(Optional.of(TEST_RESOURCE_GROUP),
- Optional.of(HostAndPort.fromString("localhost:1234")));
+ Optional.of(HostAndPort.fromString("localhost:1234")), true);
assertEquals(0, results.size());
EasyMock.verify(ctx, zc);
@@ -687,15 +843,15 @@ public class ServiceLockPathsTest {
EasyMock.replay(ctx, zc);
assertThrows(NullPointerException.class,
- () -> ctx.getServerPaths().getDeadTabletServer(null, null));
- assertThrows(NullPointerException.class,
- () ->
ctx.getServerPaths().getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
null));
- assertTrue(
- ctx.getServerPaths().getDeadTabletServer(Optional.empty(),
Optional.empty()).isEmpty());
+ () -> ctx.getServerPaths().getDeadTabletServer(null, null, false));
+ assertThrows(NullPointerException.class, () -> ctx.getServerPaths()
+ .getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP), null, false));
+ assertTrue(ctx.getServerPaths().getDeadTabletServer(Optional.empty(),
Optional.empty(), false)
+ .isEmpty());
assertTrue(ctx.getServerPaths()
- .getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty()).isEmpty());
+ .getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.empty(), false).isEmpty());
assertTrue(ctx.getServerPaths()
- .getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp)).isEmpty());
+ .getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp), false).isEmpty());
EasyMock.verify(ctx, zc);
@@ -743,7 +899,7 @@ public class ServiceLockPathsTest {
// query for all
Set<ServiceLockPath> results =
- ctx.getServerPaths().getDeadTabletServer(Optional.empty(),
Optional.empty());
+ ctx.getServerPaths().getDeadTabletServer(Optional.empty(),
Optional.empty(), false);
assertEquals(2, results.size());
Iterator<ServiceLockPath> iter = results.iterator();
ServiceLockPath slp1 = iter.next();
@@ -773,12 +929,12 @@ public class ServiceLockPathsTest {
// query for all in non-existent resource group
results =
ctx.getServerPaths().getDeadTabletServer(Optional.of("FAKE_RESOURCE_GROUP"),
- Optional.empty());
+ Optional.empty(), false);
assertEquals(0, results.size());
// query for all in test resource group
results =
ctx.getServerPaths().getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
- Optional.empty());
+ Optional.empty(), false);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -789,8 +945,8 @@ public class ServiceLockPathsTest {
slp1.toString());
// query for a specific server
- results =
-
ctx.getServerPaths().getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
Optional.of(hp));
+ results =
ctx.getServerPaths().getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
+ Optional.of(hp), false);
assertEquals(1, results.size());
iter = results.iterator();
slp1 = iter.next();
@@ -802,7 +958,7 @@ public class ServiceLockPathsTest {
// query for a wrong server
results =
ctx.getServerPaths().getDeadTabletServer(Optional.of(TEST_RESOURCE_GROUP),
- Optional.of(HostAndPort.fromString("localhost:1234")));
+ Optional.of(HostAndPort.fromString("localhost:1234")), false);
assertEquals(0, results.size());
EasyMock.verify(ctx, zc);
diff --git
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
index f79b859cc9..9970fd387e 100644
---
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
+++
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
@@ -863,7 +863,7 @@ public class MiniAccumuloClusterImpl implements
AccumuloCluster {
int tsActualCount = 0;
while (tsActualCount < tsExpectedCount) {
Set<ServiceLockPath> tservers =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true);
tsActualCount = tservers.size();
log.info(tsActualCount + " of " + tsExpectedCount + " tablet servers
present in ZooKeeper");
Thread.sleep(500);
@@ -872,7 +872,7 @@ public class MiniAccumuloClusterImpl implements
AccumuloCluster {
int ssActualCount = 0;
while (ssActualCount < ssExpectedCount) {
Set<ServiceLockPath> tservers =
- context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty(), true);
ssActualCount = tservers.size();
log.info(ssActualCount + " of " + ssExpectedCount + " scan servers
present in ZooKeeper");
Thread.sleep(500);
@@ -881,18 +881,18 @@ public class MiniAccumuloClusterImpl implements
AccumuloCluster {
int ecActualCount = 0;
while (ecActualCount < ecExpectedCount) {
Set<ServiceLockPath> compactors =
- context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty(), true);
ecActualCount = compactors.size();
log.info(ecActualCount + " of " + ecExpectedCount + " compactors present
in ZooKeeper");
Thread.sleep(500);
}
- while (context.getServerPaths().getManager() == null) {
+ while (context.getServerPaths().getManager(true) == null) {
log.info("Manager not yet present in ZooKeeper");
Thread.sleep(500);
}
- while (context.getServerPaths().getGarbageCollector() == null) {
+ while (context.getServerPaths().getGarbageCollector(true) == null) {
log.info("GC not yet present in ZooKeeper");
Thread.sleep(500);
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
index 9eb7b090f9..305b277bc2 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/manager/LiveTServerSet.java
@@ -229,17 +229,8 @@ public class LiveTServerSet implements Watcher {
try {
final Set<TServerInstance> updates = new HashSet<>();
final Set<TServerInstance> doomed = new HashSet<>();
- final ZooCache zc = getZooCache();
- final String tserverRoot = context.getZooKeeperRoot() +
Constants.ZTSERVERS;
-
- Set<ServiceLockPath> tservers = new HashSet<>();
-
- for (String resourceGroup : zc.getChildren(tserverRoot)) {
- for (String host : zc.getChildren(tserverRoot + "/" + resourceGroup)) {
- tservers.add(ServiceLockPaths.parse(Optional.of(Constants.ZTSERVERS),
- tserverRoot + "/" + resourceGroup + "/" + host));
- }
- }
+ final Set<ServiceLockPath> tservers =
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), false);
locklessServers.keySet().retainAll(tservers);
@@ -468,7 +459,8 @@ public class LiveTServerSet implements Watcher {
}
current.remove(address.orElseThrow().toString());
- Set<ServiceLockPath> paths =
context.getServerPaths().getTabletServer(resourceGroup, address);
+ Set<ServiceLockPath> paths =
+ context.getServerPaths().getTabletServer(resourceGroup, address,
false);
if (paths.isEmpty() || paths.size() > 1) {
log.error("Zero or many zookeeper entries match input arguments.");
} else {
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/DeadServerList.java
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/DeadServerList.java
index 0ef1f7777d..bc26293954 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/manager/state/DeadServerList.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/manager/state/DeadServerList.java
@@ -69,7 +69,7 @@ public class DeadServerList {
List<DeadServer> result = new ArrayList<>();
try {
Set<ServiceLockPath> deadServers =
- ctx.getServerPaths().getDeadTabletServer(Optional.empty(),
Optional.empty());
+ ctx.getServerPaths().getDeadTabletServer(Optional.empty(),
Optional.empty(), false);
for (ServiceLockPath path : deadServers) {
Stat stat = new Stat();
byte[] data;
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/AccumuloStatus.java
b/server/base/src/main/java/org/apache/accumulo/server/util/AccumuloStatus.java
index 8f20217689..24b75b89bc 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/AccumuloStatus.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/AccumuloStatus.java
@@ -33,17 +33,17 @@ public class AccumuloStatus {
*/
public static boolean isAccumuloOffline(ClientContext context) {
Set<ServiceLockPath> tservers =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true);
if (!tservers.isEmpty()) {
return false;
}
- if (context.getServerPaths().getManager() != null) {
+ if (context.getServerPaths().getManager(true) != null) {
return false;
}
- if (context.getServerPaths().getMonitor() != null) {
+ if (context.getServerPaths().getMonitor(true) != null) {
return false;
}
- if (context.getServerPaths().getGarbageCollector() != null) {
+ if (context.getServerPaths().getGarbageCollector(true) != null) {
return false;
}
return true;
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
b/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
index 34bf9818dd..6fa6341a8d 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
@@ -682,7 +682,7 @@ public class Admin implements KeywordExecutable {
static String qualifyWithZooKeeperSessionId(ClientContext context, ZooCache
zooCache,
String hostAndPort) {
Set<ServiceLockPath> paths =
context.getServerPaths().getTabletServer(Optional.empty(),
- Optional.of(HostAndPort.fromString(hostAndPort)));
+ Optional.of(HostAndPort.fromString(hostAndPort)), true);
if (paths.size() != 1) {
return hostAndPort;
}
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/ServiceStatusCmd.java
b/server/base/src/main/java/org/apache/accumulo/server/util/ServiceStatusCmd.java
index 1b545d8b39..c14dfe42f4 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/ServiceStatusCmd.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/ServiceStatusCmd.java
@@ -112,7 +112,7 @@ public class ServiceStatusCmd {
final AtomicInteger errors = new AtomicInteger(0);
final Map<String,Set<String>> hostsByGroups = new TreeMap<>();
final Set<ServiceLockPath> compactors =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true);
compactors.forEach(c -> hostsByGroups
.computeIfAbsent(c.getResourceGroup(), (k) -> new
TreeSet<>()).add(c.getServer()));
return new StatusSummary(ServiceStatusReport.ReportKey.T_SERVER,
hostsByGroups.keySet(),
@@ -129,7 +129,7 @@ public class ServiceStatusCmd {
final AtomicInteger errors = new AtomicInteger(0);
final Map<String,Set<String>> hostsByGroups = new TreeMap<>();
final Set<ServiceLockPath> scanServers =
- context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty(), true);
scanServers.forEach(c -> hostsByGroups
.computeIfAbsent(c.getResourceGroup(), (k) -> new
TreeSet<>()).add(c.getServer()));
return new StatusSummary(ServiceStatusReport.ReportKey.S_SERVER,
hostsByGroups.keySet(),
@@ -156,7 +156,7 @@ public class ServiceStatusCmd {
final AtomicInteger errors = new AtomicInteger(0);
final Map<String,Set<String>> hostsByGroups = new TreeMap<>();
final Set<ServiceLockPath> compactors =
- context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty(), true);
compactors.forEach(c -> hostsByGroups
.computeIfAbsent(c.getResourceGroup(), (k) -> new
TreeSet<>()).add(c.getServer()));
return new StatusSummary(ServiceStatusReport.ReportKey.COMPACTOR,
hostsByGroups.keySet(),
diff --git
a/server/base/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java
b/server/base/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java
index 71cb78d9d4..ab18fc13d0 100644
---
a/server/base/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java
+++
b/server/base/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java
@@ -42,7 +42,7 @@ public class TabletServerLocks {
if (delete == null) {
Set<ServiceLockPath> tabletServers =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), false);
if (tabletServers.isEmpty()) {
System.err.println("No tservers found in ZK");
}
@@ -63,7 +63,7 @@ public class TabletServerLocks {
printUsage();
} else {
Set<ServiceLockPath> paths =
context.getServerPaths().getTabletServer(Optional.empty(),
- Optional.of(HostAndPort.fromString(lock)));
+ Optional.of(HostAndPort.fromString(lock)), true);
Preconditions.checkArgument(paths.size() == 1,
lock + " does not match a single ZooKeeper TabletServer lock.
matches=" + paths);
ServiceLockPath path = paths.iterator().next();
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 87d00c5e09..a24b873eb1 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
@@ -111,7 +111,7 @@ public class ZooZap implements KeywordExecutable {
if (opts.zapTservers) {
try {
Set<ServiceLockPath> tserverLockPaths =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), false);
for (ServiceLockPath tserverPath : tserverLockPaths) {
message("Deleting " + tserverPath + " from zookeeper", opts);
@@ -133,7 +133,7 @@ public class ZooZap implements KeywordExecutable {
if (opts.zapCompactors) {
Set<ServiceLockPath> compactorLockPaths =
- context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getCompactor(Optional.empty(),
Optional.empty(), false);
Set<String> compactorResourceGroupPaths = new HashSet<>();
compactorLockPaths.forEach(p -> compactorResourceGroupPaths
.add(p.toString().substring(0, p.toString().lastIndexOf('/'))));
@@ -151,7 +151,7 @@ public class ZooZap implements KeywordExecutable {
if (opts.zapScanServers) {
try {
Set<ServiceLockPath> sserverLockPaths =
- context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getScanServer(Optional.empty(),
Optional.empty(), false);
for (ServiceLockPath sserverPath : sserverLockPaths) {
message("Deleting " + sserverPath + " from zookeeper", opts);
if (!zoo.getChildren(sserverPath.toString()).isEmpty()) {
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 d8874b0c6d..0af05eb5b7 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
@@ -644,8 +644,8 @@ public class Manager extends AbstractServer
while (stillManager()) {
try {
- Set<ServiceLockPath> scanServerPaths =
- getContext().getServerPaths().getScanServer(Optional.empty(),
Optional.empty());
+ Set<ServiceLockPath> scanServerPaths = getContext().getServerPaths()
+ .getScanServer(Optional.empty(), Optional.empty(), false);
for (ServiceLockPath path : scanServerPaths) {
ZcStat stat = new ZcStat();
diff --git
a/test/src/main/java/org/apache/accumulo/test/ScanServerConcurrentTabletScanIT.java
b/test/src/main/java/org/apache/accumulo/test/ScanServerConcurrentTabletScanIT.java
index 4c159db5d6..6022f53b62 100644
---
a/test/src/main/java/org/apache/accumulo/test/ScanServerConcurrentTabletScanIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/ScanServerConcurrentTabletScanIT.java
@@ -93,7 +93,7 @@ public class ScanServerConcurrentTabletScanIT extends
SharedMiniClusterBase {
1, null);
Wait.waitFor(() -> !getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).isEmpty());
+ .getScanServer(Optional.empty(), Optional.empty(), true).isEmpty());
}
diff --git
a/test/src/main/java/org/apache/accumulo/test/ScanServerGroupConfigurationIT.java
b/test/src/main/java/org/apache/accumulo/test/ScanServerGroupConfigurationIT.java
index 27391c7719..54a641c7ac 100644
---
a/test/src/main/java/org/apache/accumulo/test/ScanServerGroupConfigurationIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/ScanServerGroupConfigurationIT.java
@@ -126,7 +126,7 @@ public class ScanServerGroupConfigurationIT extends
SharedMiniClusterBase {
// Ensure no scan servers running
Wait.waitFor(() -> getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).isEmpty());
+ .getScanServer(Optional.empty(), Optional.empty(), true).isEmpty());
try (AccumuloClient client =
Accumulo.newClient().from(getClientProps()).build()) {
final String tableName = getUniqueNames(1)[0];
@@ -148,7 +148,7 @@ public class ScanServerGroupConfigurationIT extends
SharedMiniClusterBase {
// Start a ScanServer. No group specified, should be in the default
group.
getCluster().getClusterControl().start(ServerType.SCAN_SERVER,
"localhost");
Wait.waitFor(() -> getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).size() == 1,
30_000);
+ .getScanServer(Optional.empty(), Optional.empty(), true).size() ==
1, 30_000);
Wait.waitFor(() -> ((ClientContext)
client).getScanServers().values().stream().anyMatch(
(p) ->
p.getSecond().equals(ScanServerSelector.DEFAULT_SCAN_SERVER_GROUP_NAME))
== true);
@@ -166,7 +166,7 @@ public class ScanServerGroupConfigurationIT extends
SharedMiniClusterBase {
.addScanServerResourceGroup("GROUP1", 1);
getCluster().getClusterControl().start(ServerType.SCAN_SERVER);
Wait.waitFor(() -> getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).size() == 2,
30_000);
+ .getScanServer(Optional.empty(), Optional.empty(), true).size() ==
2, 30_000);
Wait.waitFor(() -> ((ClientContext)
client).getScanServers().values().stream().anyMatch(
(p) ->
p.getSecond().equals(ScanServerSelector.DEFAULT_SCAN_SERVER_GROUP_NAME))
== true);
diff --git a/test/src/main/java/org/apache/accumulo/test/ScanServerIT.java
b/test/src/main/java/org/apache/accumulo/test/ScanServerIT.java
index 77bdf491c8..3b12abaa59 100644
--- a/test/src/main/java/org/apache/accumulo/test/ScanServerIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ScanServerIT.java
@@ -116,7 +116,7 @@ public class ScanServerIT extends SharedMiniClusterBase {
"localhost");
Wait.waitFor(() -> !getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).isEmpty());
+ .getScanServer(Optional.empty(), Optional.empty(), true).isEmpty());
}
@AfterAll
diff --git
a/test/src/main/java/org/apache/accumulo/test/ScanServerMetadataEntriesIT.java
b/test/src/main/java/org/apache/accumulo/test/ScanServerMetadataEntriesIT.java
index 58c985efd0..a6ea8d5648 100644
---
a/test/src/main/java/org/apache/accumulo/test/ScanServerMetadataEntriesIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/ScanServerMetadataEntriesIT.java
@@ -92,7 +92,7 @@ public class ScanServerMetadataEntriesIT extends
SharedMiniClusterBase {
"localhost");
Wait.waitFor(() -> !getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).isEmpty());
+ .getScanServer(Optional.empty(), Optional.empty(), true).isEmpty());
}
diff --git
a/test/src/main/java/org/apache/accumulo/test/ScanServerMultipleScansIT.java
b/test/src/main/java/org/apache/accumulo/test/ScanServerMultipleScansIT.java
index 7eb21b954f..4df1a4b8ad 100644
--- a/test/src/main/java/org/apache/accumulo/test/ScanServerMultipleScansIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ScanServerMultipleScansIT.java
@@ -90,7 +90,7 @@ public class ScanServerMultipleScansIT extends
SharedMiniClusterBase {
"localhost");
Wait.waitFor(() -> !getCluster().getServerContext().getServerPaths()
- .getScanServer(Optional.empty(), Optional.empty()).isEmpty());
+ .getScanServer(Optional.empty(), Optional.empty(), true).isEmpty());
}
@AfterAll
diff --git
a/test/src/main/java/org/apache/accumulo/test/ScanServerShutdownIT.java
b/test/src/main/java/org/apache/accumulo/test/ScanServerShutdownIT.java
index dbe5f3f442..7f53579b6d 100644
--- a/test/src/main/java/org/apache/accumulo/test/ScanServerShutdownIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ScanServerShutdownIT.java
@@ -86,8 +86,8 @@ public class ScanServerShutdownIT extends
SharedMiniClusterBase {
ServerContext ctx = getCluster().getServerContext();
- Wait.waitFor(
- () -> !ctx.getServerPaths().getScanServer(Optional.empty(),
Optional.empty()).isEmpty());
+ Wait.waitFor(() -> !ctx.getServerPaths().getScanServer(Optional.empty(),
Optional.empty(), true)
+ .isEmpty());
try (AccumuloClient client =
Accumulo.newClient().from(getClientProps()).build()) {
final String tableName = getUniqueNames(1)[0];
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 186b07d064..1921ddc67b 100644
---
a/test/src/main/java/org/apache/accumulo/test/ThriftServerBindsBeforeZooKeeperLockIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/ThriftServerBindsBeforeZooKeeperLockIT.java
@@ -137,7 +137,7 @@ public class ThriftServerBindsBeforeZooKeeperLockIT extends
AccumuloClusterHarne
// Wait for the Manager to grab its lock
while (true) {
try {
- ServiceLockPath managerLockPath =
getServerContext().getServerPaths().getManager();
+ ServiceLockPath managerLockPath =
getServerContext().getServerPaths().getManager(true);
if (managerLockPath != null) {
break;
}
@@ -194,7 +194,7 @@ public class ThriftServerBindsBeforeZooKeeperLockIT extends
AccumuloClusterHarne
// Wait for the Manager to grab its lock
while (true) {
try {
- ServiceLockPath slp =
getServerContext().getServerPaths().getGarbageCollector();
+ ServiceLockPath slp =
getServerContext().getServerPaths().getGarbageCollector(true);
if (slp != null) {
break;
}
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/MemoryStarvedScanIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/MemoryStarvedScanIT.java
index eaa8ed0414..ffef68465d 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/MemoryStarvedScanIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/MemoryStarvedScanIT.java
@@ -200,7 +200,7 @@ public class MemoryStarvedScanIT extends
SharedMiniClusterBase {
final ZooCache zc = context.getZooCache();
Set<ServiceLockPath> servers =
- context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty());
+ context.getServerPaths().getTabletServer(Optional.empty(),
Optional.empty(), true);
for (ServiceLockPath server : servers) {
Optional<ServiceLockData> data = zc.getLockData(server);
if (data != null && data.isPresent()) {
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/TabletManagementIteratorIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/TabletManagementIteratorIT.java
index 69d2d4fa49..0364bcdcc6 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/TabletManagementIteratorIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/TabletManagementIteratorIT.java
@@ -577,7 +577,7 @@ public class TabletManagementIteratorIT extends
AccumuloClusterHarness {
HashSet<TServerInstance> tservers = new HashSet<>();
for (ServiceLockPath tserver :
context.getServerPaths().getTabletServer(Optional.empty(),
- Optional.empty())) {
+ Optional.empty(), true)) {
try {
long sessionId = ServiceLock.getSessionId(context.getZooCache(),
tserver);
tservers.add(new TServerInstance(tserver.getServer(), sessionId));
diff --git
a/test/src/main/java/org/apache/accumulo/test/functional/TabletResourceGroupBalanceIT.java
b/test/src/main/java/org/apache/accumulo/test/functional/TabletResourceGroupBalanceIT.java
index 81ecf4a128..36bceaa383 100644
---
a/test/src/main/java/org/apache/accumulo/test/functional/TabletResourceGroupBalanceIT.java
+++
b/test/src/main/java/org/apache/accumulo/test/functional/TabletResourceGroupBalanceIT.java
@@ -98,7 +98,7 @@ public class TabletResourceGroupBalanceIT extends
SharedMiniClusterBase {
Map<String,String> tservers = new HashMap<>();
for (ServiceLockPath tserver : cluster.getServerContext().getServerPaths()
- .getTabletServer(Optional.empty(), Optional.empty())) {
+ .getTabletServer(Optional.empty(), Optional.empty(), true)) {
tservers.put(tserver.getServer(), tserver.getResourceGroup());
}
return tservers;
diff --git
a/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockPathsIT.java
b/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockPathsIT.java
index a90606adbf..a39b85466a 100644
--- a/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockPathsIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/lock/ServiceLockPathsIT.java
@@ -50,54 +50,57 @@ public class ServiceLockPathsIT extends
AccumuloClusterHarness {
@Test
public void testPaths() throws Exception {
ServiceLockPaths paths = getServerContext().getServerPaths();
- assertNotNull(paths.getGarbageCollector());
- assertNotNull(paths.getManager());
- assertNull(paths.getMonitor()); // monitor not started
- assertEquals(2, paths.getTabletServer(Optional.empty(),
Optional.empty()).size());
- assertEquals(1,
-
paths.getTabletServer(Optional.of(Constants.DEFAULT_RESOURCE_GROUP_NAME),
Optional.empty())
- .size());
- assertEquals(1, paths.getTabletServer(Optional.of("TTEST"),
Optional.empty()).size());
- assertEquals(0, paths.getTabletServer(Optional.of("FAKE"),
Optional.empty()).size());
- assertEquals(0, paths.getTabletServer(Optional.of("CTEST"),
Optional.empty()).size());
- assertEquals(0, paths.getTabletServer(Optional.of("STEST"),
Optional.empty()).size());
-
- assertEquals(4, paths.getCompactor(Optional.empty(),
Optional.empty()).size());
+ assertNotNull(paths.getGarbageCollector(true));
+ assertNotNull(paths.getManager(true));
+ assertNull(paths.getMonitor(true)); // monitor not started
+ assertEquals(2, paths.getTabletServer(Optional.empty(), Optional.empty(),
true).size());
assertEquals(1, paths
- .getCompactor(Optional.of(Constants.DEFAULT_RESOURCE_GROUP_NAME),
Optional.empty()).size());
- assertEquals(3, paths.getCompactor(Optional.of("CTEST"),
Optional.empty()).size());
- assertEquals(0, paths.getCompactor(Optional.of("FAKE"),
Optional.empty()).size());
- assertEquals(0, paths.getCompactor(Optional.of("TTEST"),
Optional.empty()).size());
- assertEquals(0, paths.getCompactor(Optional.of("STEST"),
Optional.empty()).size());
-
- assertEquals(3, paths.getScanServer(Optional.empty(),
Optional.empty()).size());
- assertEquals(1,
-
paths.getScanServer(Optional.of(Constants.DEFAULT_RESOURCE_GROUP_NAME),
Optional.empty())
- .size());
- assertEquals(2, paths.getScanServer(Optional.of("STEST"),
Optional.empty()).size());
- assertEquals(0, paths.getScanServer(Optional.of("FAKE"),
Optional.empty()).size());
- assertEquals(0, paths.getScanServer(Optional.of("CTEST"),
Optional.empty()).size());
- assertEquals(0, paths.getScanServer(Optional.of("TTEST"),
Optional.empty()).size());
+ .getTabletServer(Optional.of(Constants.DEFAULT_RESOURCE_GROUP_NAME),
Optional.empty(), true)
+ .size());
+ assertEquals(1, paths.getTabletServer(Optional.of("TTEST"),
Optional.empty(), true).size());
+ assertEquals(0, paths.getTabletServer(Optional.of("FAKE"),
Optional.empty(), true).size());
+ assertEquals(0, paths.getTabletServer(Optional.of("CTEST"),
Optional.empty(), true).size());
+ assertEquals(0, paths.getTabletServer(Optional.of("STEST"),
Optional.empty(), true).size());
+
+ assertEquals(4, paths.getCompactor(Optional.empty(), Optional.empty(),
true).size());
+ assertEquals(1, paths
+ .getCompactor(Optional.of(Constants.DEFAULT_RESOURCE_GROUP_NAME),
Optional.empty(), true)
+ .size());
+ assertEquals(3, paths.getCompactor(Optional.of("CTEST"), Optional.empty(),
true).size());
+ assertEquals(0, paths.getCompactor(Optional.of("FAKE"), Optional.empty(),
true).size());
+ assertEquals(0, paths.getCompactor(Optional.of("TTEST"), Optional.empty(),
true).size());
+ assertEquals(0, paths.getCompactor(Optional.of("STEST"), Optional.empty(),
true).size());
+
+ assertEquals(3, paths.getScanServer(Optional.empty(), Optional.empty(),
true).size());
+ assertEquals(1, paths
+ .getScanServer(Optional.of(Constants.DEFAULT_RESOURCE_GROUP_NAME),
Optional.empty(), true)
+ .size());
+ assertEquals(2, paths.getScanServer(Optional.of("STEST"),
Optional.empty(), true).size());
+ assertEquals(0, paths.getScanServer(Optional.of("FAKE"), Optional.empty(),
true).size());
+ assertEquals(0, paths.getScanServer(Optional.of("CTEST"),
Optional.empty(), true).size());
+ assertEquals(0, paths.getScanServer(Optional.of("TTEST"),
Optional.empty(), true).size());
getCluster().getClusterControl().stopAllServers(ServerType.COMPACTOR);
- Wait.waitFor(() -> paths.getCompactor(Optional.empty(),
Optional.empty()).size() == 0);
+ Wait.waitFor(() -> paths.getCompactor(Optional.empty(), Optional.empty(),
true).size() == 0);
getCluster().getClusterControl().stopAllServers(ServerType.SCAN_SERVER);
- Wait.waitFor(() -> paths.getScanServer(Optional.empty(),
Optional.empty()).size() == 0);
+ Wait.waitFor(() -> paths.getScanServer(Optional.empty(), Optional.empty(),
true).size() == 0);
getCluster().getClusterControl().stopAllServers(ServerType.GARBAGE_COLLECTOR);
- Wait.waitFor(() -> paths.getGarbageCollector() == null);
+ Wait.waitFor(() -> paths.getGarbageCollector(true) == null);
getCluster().getClusterControl().stopAllServers(ServerType.MANAGER);
- Wait.waitFor(() -> paths.getManager() == null);
+ Wait.waitFor(() -> paths.getManager(true) == null);
getCluster().getClusterControl().stopAllServers(ServerType.TABLET_SERVER);
- Wait.waitFor(() -> paths.getTabletServer(Optional.empty(),
Optional.empty()).size() == 0);
+ Wait.waitFor(() -> paths.getTabletServer(Optional.empty(),
Optional.empty(), true).size() == 0);
+ Wait.waitFor(
+ () -> paths.getTabletServer(Optional.empty(), Optional.empty(),
false).size() == 2);
}