mikewalch closed pull request #565: Removed usage of Instance
URL: https://github.com/apache/accumulo/pull/565
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/impl/Namespace.java 
b/core/src/main/java/org/apache/accumulo/core/client/impl/Namespace.java
index db5d8385a6..afaeea2b38 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Namespace.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Namespace.java
@@ -18,8 +18,6 @@
 
 import java.util.concurrent.ExecutionException;
 
-import org.apache.accumulo.core.client.Instance;
-
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 
@@ -31,7 +29,7 @@
   /**
    * Object representing an internal Namespace ID. This class was created to 
help with type safety.
    * For help obtaining the value of a namespace ID from Zookeeper, see
-   * {@link Namespaces#getNamespaceId(Instance, String)}
+   * {@link Namespaces#getNamespaceId(ClientContext, String)}
    *
    * Uses an internal cache and private constructor for storing a 
WeakReference of every
    * Namespace.ID. Therefore, a Namespace.ID can't be instantiated outside 
this class and is
diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
index ec45d90c69..c397a0fb30 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/impl/NamespaceOperationsImpl.java
@@ -100,7 +100,7 @@ public boolean exists(String namespace) {
       timer = new OpTimer().start();
     }
 
-    boolean exists = Namespaces.namespaceNameExists(context.getInstance(), 
namespace);
+    boolean exists = Namespaces.namespaceNameExists(context, namespace);
 
     if (timer != null) {
       timer.stop();
@@ -130,7 +130,7 @@ public void create(String namespace)
   public void delete(String namespace) throws AccumuloException, 
AccumuloSecurityException,
       NamespaceNotFoundException, NamespaceNotEmptyException {
     checkArgument(namespace != null, "namespace is null");
-    Namespace.ID namespaceId = 
Namespaces.getNamespaceId(context.getInstance(), namespace);
+    Namespace.ID namespaceId = Namespaces.getNamespaceId(context, namespace);
 
     if (namespaceId.equals(Namespace.ID.ACCUMULO) || 
namespaceId.equals(Namespace.ID.DEFAULT)) {
       Credentials credentials = context.getCredentials();
@@ -139,7 +139,7 @@ public void delete(String namespace) throws 
AccumuloException, AccumuloSecurityE
           SecurityErrorCode.UNSUPPORTED_OPERATION);
     }
 
-    if (Namespaces.getTableIds(context.getInstance(), namespaceId).size() > 0) 
{
+    if (Namespaces.getTableIds(context, namespaceId).size() > 0) {
       throw new NamespaceNotEmptyException(namespaceId.canonicalID(), 
namespace, null);
     }
 
diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/impl/Namespaces.java 
b/core/src/main/java/org/apache/accumulo/core/client/impl/Namespaces.java
index 40e95cfc0e..d2a6f21544 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Namespaces.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Namespaces.java
@@ -84,27 +84,28 @@ private static ZooCache getZooCache(Instance instance) {
         instance.getZooKeepersSessionTimeOut());
   }
 
-  public static boolean exists(Instance instance, Namespace.ID namespaceId) {
-    ZooCache zc = getZooCache(instance);
-    List<String> namespaceIds = zc.getChildren(ZooUtil.getRoot(instance) + 
Constants.ZNAMESPACES);
+  public static boolean exists(ClientContext context, Namespace.ID 
namespaceId) {
+    ZooCache zc = getZooCache(context.getInstance());
+    List<String> namespaceIds = zc
+        .getChildren(ZooUtil.getRoot(context.getInstance()) + 
Constants.ZNAMESPACES);
     return namespaceIds.contains(namespaceId.canonicalID());
   }
 
-  public static List<Table.ID> getTableIds(Instance instance, Namespace.ID 
namespaceId)
+  public static List<Table.ID> getTableIds(ClientContext context, Namespace.ID 
namespaceId)
       throws NamespaceNotFoundException {
-    String namespace = getNamespaceName(instance, namespaceId);
+    String namespace = getNamespaceName(context, namespaceId);
     List<Table.ID> tableIds = new LinkedList<>();
-    for (Entry<String,Table.ID> nameToId : 
Tables.getNameToIdMap(instance).entrySet())
+    for (Entry<String,Table.ID> nameToId : 
Tables.getNameToIdMap(context).entrySet())
       if (namespace.equals(Tables.qualify(nameToId.getKey()).getFirst()))
         tableIds.add(nameToId.getValue());
     return tableIds;
   }
 
-  public static List<String> getTableNames(Instance instance, Namespace.ID 
namespaceId)
+  public static List<String> getTableNames(ClientContext context, Namespace.ID 
namespaceId)
       throws NamespaceNotFoundException {
-    String namespace = getNamespaceName(instance, namespaceId);
+    String namespace = getNamespaceName(context.getInstance(), namespaceId);
     List<String> names = new LinkedList<>();
-    for (String name : Tables.getNameToIdMap(instance).keySet())
+    for (String name : Tables.getNameToIdMap(context).keySet())
       if (namespace.equals(Tables.qualify(name).getFirst()))
         names.add(name);
     return names;
@@ -129,9 +130,9 @@ private static void getAllNamespaces(Instance instance, 
BiConsumer<String,String
   /**
    * Return sorted map with key = ID, value = namespaceName
    */
-  public static SortedMap<Namespace.ID,String> getIdToNameMap(Instance 
instance) {
+  public static SortedMap<Namespace.ID,String> getIdToNameMap(ClientContext 
context) {
     SortedMap<Namespace.ID,String> idMap = new TreeMap<>();
-    getAllNamespaces(instance, (id, name) -> idMap.put(Namespace.ID.of(id), 
name));
+    getAllNamespaces(context.getInstance(), (id, name) -> 
idMap.put(Namespace.ID.of(id), name));
     return idMap;
   }
 
@@ -147,10 +148,10 @@ private static void getAllNamespaces(Instance instance, 
BiConsumer<String,String
   /**
    * Look for namespace ID in ZK. Throw NamespaceNotFoundException if not 
found.
    */
-  public static Namespace.ID getNamespaceId(Instance instance, String 
namespaceName)
+  public static Namespace.ID getNamespaceId(ClientContext context, String 
namespaceName)
       throws NamespaceNotFoundException {
     final ArrayList<Namespace.ID> singleId = new ArrayList<>(1);
-    getAllNamespaces(instance, (id, name) -> {
+    getAllNamespaces(context.getInstance(), (id, name) -> {
       if (name.equals(namespaceName))
         singleId.add(Namespace.ID.of(id));
     });
@@ -163,10 +164,10 @@ private static void getAllNamespaces(Instance instance, 
BiConsumer<String,String
   /**
    * Look for namespace ID in ZK. Fail quietly by logging and returning null.
    */
-  public static Namespace.ID lookupNamespaceId(Instance instance, String 
namespaceName) {
+  public static Namespace.ID lookupNamespaceId(ClientContext context, String 
namespaceName) {
     Namespace.ID id = null;
     try {
-      id = getNamespaceId(instance, namespaceName);
+      id = getNamespaceId(context, namespaceName);
     } catch (NamespaceNotFoundException e) {
       if (log.isDebugEnabled())
         log.debug("Failed to find namespace ID from name: " + namespaceName, 
e);
@@ -177,13 +178,18 @@ private static void getAllNamespaces(Instance instance, 
BiConsumer<String,String
   /**
    * Return true if namespace name exists
    */
-  public static boolean namespaceNameExists(Instance instance, String 
namespaceName) {
-    return lookupNamespaceId(instance, namespaceName) != null;
+  public static boolean namespaceNameExists(ClientContext context, String 
namespaceName) {
+    return lookupNamespaceId(context, namespaceName) != null;
   }
 
   /**
    * Look for namespace name in ZK. Throw NamespaceNotFoundException if not 
found.
    */
+  public static String getNamespaceName(ClientContext context, Namespace.ID 
namespaceId)
+      throws NamespaceNotFoundException {
+    return getNamespaceName(context.getInstance(), namespaceId);
+  }
+
   public static String getNamespaceName(Instance instance, Namespace.ID 
namespaceId)
       throws NamespaceNotFoundException {
     String name;
diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineIterator.java 
b/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineIterator.java
index 2418554987..af5626d66c 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineIterator.java
@@ -334,7 +334,7 @@ private void nextTablet() throws TableNotFoundException, 
AccumuloException, IOEx
     // TODO share code w/ tablet - ACCUMULO-1303
 
     // possible race condition here, if table is renamed
-    String tableName = Tables.getTableName(conn.getInstance(), tableId);
+    String tableName = Tables.getTableName(context, tableId);
     AccumuloConfiguration acuTableConf = new ConfigurationCopy(
         conn.tableOperations().getProperties(tableName));
 
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Table.java 
b/core/src/main/java/org/apache/accumulo/core/client/impl/Table.java
index 23b083be0f..11c645990c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Table.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Table.java
@@ -18,8 +18,6 @@
 
 import java.util.concurrent.ExecutionException;
 
-import org.apache.accumulo.core.client.Instance;
-
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 
@@ -28,7 +26,7 @@
   /**
    * Object representing an internal table ID. This class was created to help 
with type safety. For
    * help obtaining the value of a table ID from Zookeeper, see
-   * {@link Tables#getTableId(Instance, String)}
+   * {@link Tables#getTableId(ClientContext, String)}
    *
    * Uses an internal cache and private constructor for storing a 
WeakReference of every Table.ID.
    * Therefore, a Table.ID can't be instantiated outside this class and is 
accessed by calling
diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
 
b/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
index 6ed44a8638..1f628179fc 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/impl/TableOperationsImpl.java
@@ -165,8 +165,7 @@ public TableOperationsImpl(ClientContext context) {
       timer = new OpTimer().start();
     }
 
-    TreeSet<String> tableNames = new TreeSet<>(
-        Tables.getNameToIdMap(context.getInstance()).keySet());
+    TreeSet<String> tableNames = new 
TreeSet<>(Tables.getNameToIdMap(context).keySet());
 
     if (timer != null) {
       timer.stop();
@@ -190,7 +189,7 @@ public boolean exists(String tableName) {
       timer = new OpTimer().start();
     }
 
-    boolean exists = 
Tables.getNameToIdMap(context.getInstance()).containsKey(tableName);
+    boolean exists = Tables.getNameToIdMap(context).containsKey(tableName);
 
     if (timer != null) {
       timer.stop();
@@ -363,8 +362,7 @@ String doFateOperation(FateOperation op, List<ByteBuffer> 
args, Map<String,Strin
           throw new NamespaceNotFoundException(null, tableOrNamespaceName,
               "Target namespace does not exist");
         default:
-          String tableInfo = 
Tables.getPrintableTableInfoFromName(context.getInstance(),
-              tableOrNamespaceName);
+          String tableInfo = Tables.getPrintableTableInfoFromName(context, 
tableOrNamespaceName);
           throw new AccumuloSecurityException(e.user, e.code, tableInfo, e);
       }
     } catch (ThriftTableOperationException e) {
@@ -1404,7 +1402,7 @@ public void clearLocatorCache(String tableName) throws 
TableNotFoundException {
 
   @Override
   public Map<String,String> tableIdMap() {
-    return Tables.getNameToIdMap(context.getInstance()).entrySet().stream()
+    return Tables.getNameToIdMap(context).entrySet().stream()
         .collect(Collectors.toMap(Entry::getKey, e -> 
e.getValue().canonicalID(), (v1, v2) -> {
           throw new RuntimeException(String.format("Duplicate key for values 
%s and %s", v1, v2));
         }, TreeMap::new));
diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java 
b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
index 63e9316d25..94d60671dc 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
@@ -59,13 +59,8 @@
 
   public static Table.ID getTableId(ClientContext context, String tableName)
       throws TableNotFoundException {
-    return getTableId(context.getInstance(), tableName);
-  }
-
-  public static Table.ID getTableId(Instance instance, String tableName)
-      throws TableNotFoundException {
     try {
-      return _getTableId(instance, tableName);
+      return _getTableId(context, tableName);
     } catch (NamespaceNotFoundException e) {
       throw new TableNotFoundException(tableName, e);
     }
@@ -98,17 +93,17 @@ private static ZooCache getZooCache(final Instance 
instance) {
   /**
    * Lookup table ID in ZK. If not found, clears cache and tries again.
    */
-  public static Table.ID _getTableId(Instance instance, String tableName)
+  public static Table.ID _getTableId(ClientContext context, String tableName)
       throws NamespaceNotFoundException, TableNotFoundException {
-    Table.ID tableId = getNameToIdMap(instance).get(tableName);
+    Table.ID tableId = getNameToIdMap(context).get(tableName);
     if (tableId == null) {
       // maybe the table exist, but the cache was not updated yet... so try to 
clear the cache and
       // check again
-      clearCache(instance);
-      tableId = getNameToIdMap(instance).get(tableName);
+      clearCache(context.getInstance());
+      tableId = getNameToIdMap(context).get(tableName);
       if (tableId == null) {
         String namespace = qualify(tableName).getFirst();
-        if (Namespaces.getNameToIdMap(instance).containsKey(namespace))
+        if 
(Namespaces.getNameToIdMap(context.getInstance()).containsKey(namespace))
           throw new TableNotFoundException(null, tableName, null);
         else
           throw new NamespaceNotFoundException(null, namespace, null);
@@ -145,8 +140,12 @@ public static String getTableOfflineMsg(Instance instance, 
Table.ID tableId) {
     }
   }
 
-  public static Map<String,Table.ID> getNameToIdMap(Instance instance) {
-    return getTableMap(instance).getNameToIdMap();
+  public static Map<String,Table.ID> getNameToIdMap(ClientContext context) {
+    return getTableMap(context.getInstance()).getNameToIdMap();
+  }
+
+  public static Map<Table.ID,String> getIdToNameMap(ClientContext context) {
+    return getIdToNameMap(context.getInstance());
   }
 
   public static Map<Table.ID,String> getIdToNameMap(Instance instance) {
@@ -218,10 +217,10 @@ public static String getPrintableTableInfoFromId(Instance 
instance, Table.ID tab
         : String.format("%s(ID:%s)", tableName, tableId.canonicalID());
   }
 
-  public static String getPrintableTableInfoFromName(Instance instance, String 
tableName) {
+  public static String getPrintableTableInfoFromName(ClientContext context, 
String tableName) {
     Table.ID tableId = null;
     try {
-      tableId = getTableId(instance, tableName);
+      tableId = getTableId(context, tableName);
     } catch (TableNotFoundException e) {
       // handled in the string formatting
     }
diff --git a/core/src/main/java/org/apache/accumulo/core/util/Merge.java 
b/core/src/main/java/org/apache/accumulo/core/util/Merge.java
index 2431c8ffe8..81bd29b617 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/Merge.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/Merge.java
@@ -24,6 +24,7 @@
 import org.apache.accumulo.core.cli.ClientOnRequiredTable;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Table;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
@@ -220,7 +221,8 @@ protected void merge(Connector conn, String table, 
List<Size> sizes, int numToMe
     Table.ID tableId;
     Scanner scanner;
     try {
-      tableId = Tables.getTableId(conn.getInstance(), tablename);
+      ClientContext context = new ClientContext(conn.info());
+      tableId = Tables.getTableId(context, tablename);
       scanner = conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
     } catch (Exception e) {
       throw new MergeException(e);
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOpts.java 
b/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOpts.java
index 9d67c4d9a9..d420e9d544 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOpts.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOpts.java
@@ -19,6 +19,7 @@
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.server.client.HdfsZooInstance;
 
 public class ClientOpts extends org.apache.accumulo.core.cli.ClientOpts {
@@ -26,6 +27,10 @@
     setPrincipal("root");
   }
 
+  public ClientContext getClientContext() {
+    return new ClientContext(getClientInfo());
+  }
+
   @Override
   public Instance getInstance() {
     if (instance == null) {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
 
b/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
index 3ca9f6dbe3..a1b9356ca3 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
@@ -33,6 +33,7 @@
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Credentials;
 import org.apache.accumulo.core.client.impl.Namespace;
 import org.apache.accumulo.core.client.impl.Namespaces;
@@ -90,11 +91,11 @@ public ClientServiceHandler(AccumuloServerContext context, 
TransactionWatcher tr
     this.security = AuditedSecurityOperation.getInstance(context);
   }
 
-  public static Table.ID checkTableId(Instance instance, String tableName, 
TableOperation operation)
-      throws ThriftTableOperationException {
+  public static Table.ID checkTableId(ClientContext context, String tableName,
+      TableOperation operation) throws ThriftTableOperationException {
     TableOperationExceptionType reason = null;
     try {
-      return Tables._getTableId(instance, tableName);
+      return Tables._getTableId(context, tableName);
     } catch (NamespaceNotFoundException e) {
       reason = TableOperationExceptionType.NAMESPACE_NOTFOUND;
     } catch (TableNotFoundException e) {
@@ -103,14 +104,14 @@ public ClientServiceHandler(AccumuloServerContext 
context, TransactionWatcher tr
     throw new ThriftTableOperationException(null, tableName, operation, 
reason, null);
   }
 
-  public static Namespace.ID checkNamespaceId(Instance instance, String 
namespaceName,
+  public static Namespace.ID checkNamespaceId(ClientContext context, String 
namespaceName,
       TableOperation operation) throws ThriftTableOperationException {
-    Namespace.ID namespaceId = Namespaces.lookupNamespaceId(instance, 
namespaceName);
+    Namespace.ID namespaceId = Namespaces.lookupNamespaceId(context, 
namespaceName);
     if (namespaceId == null) {
       // maybe the namespace exists, but the cache was not updated yet... so 
try to clear the cache
       // and check again
-      Tables.clearCache(instance);
-      namespaceId = Namespaces.lookupNamespaceId(instance, namespaceName);
+      Tables.clearCache(context);
+      namespaceId = Namespaces.lookupNamespaceId(context, namespaceName);
       if (namespaceId == null)
         throw new ThriftTableOperationException(null, namespaceName, operation,
             TableOperationExceptionType.NAMESPACE_NOTFOUND, null);
@@ -215,7 +216,7 @@ public void grantSystemPermission(TInfo tinfo, TCredentials 
credentials, String
   @Override
   public void grantTablePermission(TInfo tinfo, TCredentials credentials, 
String user,
       String tableName, byte permission) throws TException {
-    Table.ID tableId = checkTableId(instance, tableName, 
TableOperation.PERMISSION);
+    Table.ID tableId = checkTableId(context, tableName, 
TableOperation.PERMISSION);
     Namespace.ID namespaceId;
     try {
       namespaceId = Tables.getNamespaceId(instance, tableId);
@@ -230,7 +231,7 @@ public void grantTablePermission(TInfo tinfo, TCredentials 
credentials, String u
   @Override
   public void grantNamespacePermission(TInfo tinfo, TCredentials credentials, 
String user,
       String ns, byte permission) throws ThriftSecurityException, 
ThriftTableOperationException {
-    Namespace.ID namespaceId = checkNamespaceId(instance, ns, 
TableOperation.PERMISSION);
+    Namespace.ID namespaceId = checkNamespaceId(context, ns, 
TableOperation.PERMISSION);
     security.grantNamespacePermission(credentials, user, namespaceId,
         NamespacePermission.getPermissionById(permission));
   }
@@ -245,7 +246,7 @@ public void revokeSystemPermission(TInfo tinfo, 
TCredentials credentials, String
   @Override
   public void revokeTablePermission(TInfo tinfo, TCredentials credentials, 
String user,
       String tableName, byte permission) throws TException {
-    Table.ID tableId = checkTableId(instance, tableName, 
TableOperation.PERMISSION);
+    Table.ID tableId = checkTableId(context, tableName, 
TableOperation.PERMISSION);
     Namespace.ID namespaceId;
     try {
       namespaceId = Tables.getNamespaceId(instance, tableId);
@@ -268,7 +269,7 @@ public boolean hasSystemPermission(TInfo tinfo, 
TCredentials credentials, String
   public boolean hasTablePermission(TInfo tinfo, TCredentials credentials, 
String user,
       String tableName, byte tblPerm)
       throws ThriftSecurityException, ThriftTableOperationException {
-    Table.ID tableId = checkTableId(instance, tableName, 
TableOperation.PERMISSION);
+    Table.ID tableId = checkTableId(context, tableName, 
TableOperation.PERMISSION);
     return security.hasTablePermission(credentials, user, tableId,
         TablePermission.getPermissionById(tblPerm));
   }
@@ -276,7 +277,7 @@ public boolean hasTablePermission(TInfo tinfo, TCredentials 
credentials, String
   @Override
   public boolean hasNamespacePermission(TInfo tinfo, TCredentials credentials, 
String user,
       String ns, byte perm) throws ThriftSecurityException, 
ThriftTableOperationException {
-    Namespace.ID namespaceId = checkNamespaceId(instance, ns, 
TableOperation.PERMISSION);
+    Namespace.ID namespaceId = checkNamespaceId(context, ns, 
TableOperation.PERMISSION);
     return security.hasNamespacePermission(credentials, user, namespaceId,
         NamespacePermission.getPermissionById(perm));
   }
@@ -284,7 +285,7 @@ public boolean hasNamespacePermission(TInfo tinfo, 
TCredentials credentials, Str
   @Override
   public void revokeNamespacePermission(TInfo tinfo, TCredentials credentials, 
String user,
       String ns, byte permission) throws ThriftSecurityException, 
ThriftTableOperationException {
-    Namespace.ID namespaceId = checkNamespaceId(instance, ns, 
TableOperation.PERMISSION);
+    Namespace.ID namespaceId = checkNamespaceId(context, ns, 
TableOperation.PERMISSION);
     security.revokeNamespacePermission(credentials, user, namespaceId,
         NamespacePermission.getPermissionById(permission));
   }
@@ -327,7 +328,7 @@ public void revokeNamespacePermission(TInfo tinfo, 
TCredentials credentials, Str
   @Override
   public Map<String,String> getTableConfiguration(TInfo tinfo, TCredentials 
credentials,
       String tableName) throws TException, ThriftTableOperationException {
-    Table.ID tableId = checkTableId(instance, tableName, null);
+    Table.ID tableId = checkTableId(context, tableName, null);
     AccumuloConfiguration config = context.getServerConfigurationFactory()
         .getTableConfiguration(tableId);
     return conf(credentials, config);
@@ -390,7 +391,7 @@ public boolean checkTableClass(TInfo tinfo, TCredentials 
credentials, String tab
 
     security.authenticateUser(credentials, credentials);
 
-    Table.ID tableId = checkTableId(instance, tableName, null);
+    Table.ID tableId = checkTableId(context, tableName, null);
 
     ClassLoader loader = getClass().getClassLoader();
     Class<?> shouldMatch;
@@ -426,7 +427,7 @@ public boolean checkNamespaceClass(TInfo tinfo, 
TCredentials credentials, String
 
     security.authenticateUser(credentials, credentials);
 
-    Namespace.ID namespaceId = checkNamespaceId(instance, ns, null);
+    Namespace.ID namespaceId = checkNamespaceId(context, ns, null);
 
     ClassLoader loader = getClass().getClassLoader();
     Class<?> shouldMatch;
@@ -463,7 +464,7 @@ public boolean checkNamespaceClass(TInfo tinfo, 
TCredentials credentials, String
 
       for (String table : tables) {
         // ensure that table table exists
-        Table.ID tableId = checkTableId(instance, table, null);
+        Table.ID tableId = checkTableId(context, table, null);
         tableIds.add(tableId);
         Namespace.ID namespaceId = Tables.getNamespaceId(instance, tableId);
         if (!security.canScan(credentials, tableId, namespaceId))
@@ -492,7 +493,7 @@ public boolean checkNamespaceClass(TInfo tinfo, 
TCredentials credentials, String
       String ns) throws ThriftTableOperationException, TException {
     Namespace.ID namespaceId;
     try {
-      namespaceId = Namespaces.getNamespaceId(instance, ns);
+      namespaceId = Namespaces.getNamespaceId(context, ns);
     } catch (NamespaceNotFoundException e) {
       String why = "Could not find namespace while getting configuration.";
       throw new ThriftTableOperationException(null, ns, null,
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/log/WalStateManager.java 
b/server/base/src/main/java/org/apache/accumulo/server/log/WalStateManager.java
index da74826d63..22703eb7f8 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/log/WalStateManager.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/log/WalStateManager.java
@@ -25,7 +25,7 @@
 import java.util.Map.Entry;
 import java.util.UUID;
 
-import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.zookeeper.ZooUtil;
 import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeExistsPolicy;
@@ -88,18 +88,18 @@ public WalMarkerException(Exception ex) {
     UNREFERENCED
   }
 
-  private final Instance instance;
+  private final ClientContext context;
   private final ZooReaderWriter zoo;
 
   private volatile boolean checkedExistance = false;
 
-  public WalStateManager(Instance instance, ZooReaderWriter zoo) {
-    this.instance = instance;
+  public WalStateManager(ClientContext context, ZooReaderWriter zoo) {
+    this.context = context;
     this.zoo = zoo;
   }
 
   private String root() throws WalMarkerException {
-    String root = ZooUtil.getRoot(instance) + ZWALS;
+    String root = ZooUtil.getRoot(context.getInstanceID()) + ZWALS;
 
     try {
       if (!checkedExistance && !zoo.exists(root)) {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicationUtil.java
 
b/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicationUtil.java
index c0196318a8..82a6ab078c 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicationUtil.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicationUtil.java
@@ -125,7 +125,7 @@ public int getMaxReplicationThreads(MasterMonitorInfo mmi) {
   public Set<ReplicationTarget> getReplicationTargets() {
     // The total set of configured targets
     final Set<ReplicationTarget> allConfiguredTargets = new HashSet<>();
-    final Map<String,Table.ID> tableNameToId = 
Tables.getNameToIdMap(context.getInstance());
+    final Map<String,Table.ID> tableNameToId = Tables.getNameToIdMap(context);
 
     for (String table : tableNameToId.keySet()) {
       if (MetadataTable.NAME.equals(table) || RootTable.NAME.equals(table)) {
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
 
b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
index f585f58334..a98212c2b3 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/security/AuditedSecurityOperation.java
@@ -80,7 +80,7 @@ public static synchronized SecurityOperation 
getInstance(AccumuloServerContext c
 
   private String getTableName(Table.ID tableId) {
     try {
-      return Tables.getTableName(context.getInstance(), tableId);
+      return Tables.getTableName(context, tableId);
     } catch (TableNotFoundException e) {
       return "Unknown Table with ID " + tableId;
     }
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/ListVolumesUsed.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/ListVolumesUsed.java
index 841f805ab7..0f5bf5f45e 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/ListVolumesUsed.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/ListVolumesUsed.java
@@ -20,7 +20,6 @@
 import java.util.Map.Entry;
 import java.util.TreeSet;
 
-import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.impl.ClientContext;
@@ -80,11 +79,11 @@ private static void listZookeeper() throws Exception {
 
   }
 
-  private static void listTable(String name, Connector conn) throws Exception {
+  private static void listTable(String name, ClientContext context) throws 
Exception {
 
     System.out.println("Listing volumes referenced in " + name + " tablets 
section");
 
-    Scanner scanner = conn.createScanner(name, Authorizations.EMPTY);
+    Scanner scanner = context.getConnector().createScanner(name, 
Authorizations.EMPTY);
 
     scanner.setRange(MetadataSchema.TabletsSection.getRange());
     
scanner.fetchColumnFamily(MetadataSchema.TabletsSection.DataFileColumnFamily.NAME);
@@ -129,7 +128,7 @@ private static void listTable(String name, Connector conn) 
throws Exception {
 
     volumes.clear();
 
-    WalStateManager wals = new WalStateManager(conn.getInstance(), 
ZooReaderWriter.getInstance());
+    WalStateManager wals = new WalStateManager(context, 
ZooReaderWriter.getInstance());
     for (Path path : wals.getAllState().keySet()) {
       volumes.add(getLogURI(path.toString()));
     }
@@ -141,12 +140,11 @@ private static void listTable(String name, Connector 
conn) throws Exception {
   }
 
   public static void listVolumes(ClientContext context) throws Exception {
-    Connector conn = context.getConnector();
     listZookeeper();
     System.out.println();
-    listTable(RootTable.NAME, conn);
+    listTable(RootTable.NAME, context);
     System.out.println();
-    listTable(MetadataTable.NAME, conn);
+    listTable(MetadataTable.NAME, context);
   }
 
 }
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java 
b/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
index 5edcc7b7d6..7ed7055634 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/TableDiskUsage.java
@@ -33,6 +33,7 @@
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Table;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.data.Key;
@@ -216,7 +217,8 @@ public static void printDiskUsage(Collection<String> 
tableNames, VolumeManager f
       }
     }
 
-    Map<Table.ID,String> reverseTableIdMap = 
Tables.getIdToNameMap(conn.getInstance());
+    ClientContext context = new ClientContext(conn.info());
+    Map<Table.ID,String> reverseTableIdMap = Tables.getIdToNameMap(context);
 
     TreeMap<TreeSet<String>,Long> usage = new TreeMap<>((o1, o2) -> {
       int len1 = o1.size();
@@ -269,10 +271,11 @@ public static void printDiskUsage(Collection<String> 
tableNames, VolumeManager f
       Printer printer, boolean humanReadable) throws TableNotFoundException, 
IOException {
 
     HashSet<Table.ID> tableIds = new HashSet<>();
+    ClientContext context = new ClientContext(conn.info());
 
     // Get table IDs for all tables requested to be 'du'
     for (String tableName : tableNames) {
-      Table.ID tableId = Tables.getTableId(conn.getInstance(), tableName);
+      Table.ID tableId = Tables.getTableId(context, tableName);
       if (tableId == null)
         throw new TableNotFoundException(null, tableName, "Table " + tableName 
+ " not found");
 
diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
 
b/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
index e039ca8754..a133a1ed70 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/util/VerifyTabletAssignments.java
@@ -91,7 +91,7 @@ private static void checkTable(final ClientContext context, 
final Opts opts, Str
 
     TreeMap<KeyExtent,String> tabletLocations = new TreeMap<>();
 
-    Table.ID tableId = 
Tables.getNameToIdMap(context.getInstance()).get(tableName);
+    Table.ID tableId = Tables.getNameToIdMap(context).get(tableName);
     MetadataServicer.forTableId(context, 
tableId).getTabletLocations(tabletLocations);
 
     final HashSet<KeyExtent> failures = new HashSet<>();
diff --git 
a/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogs.java
 
b/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogs.java
index c663d9a21b..4bde774805 100644
--- 
a/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogs.java
+++ 
b/server/gc/src/main/java/org/apache/accumulo/gc/GarbageCollectWriteAheadLogs.java
@@ -104,7 +104,7 @@ public void update(LiveTServerSet current, 
Set<TServerInstance> deleted,
       }
     });
     liveServers.startListeningForTabletServerChanges();
-    this.walMarker = new WalStateManager(context.getInstance(), 
ZooReaderWriter.getInstance());
+    this.walMarker = new WalStateManager(context, 
ZooReaderWriter.getInstance());
     this.store = new Iterable<TabletLocationState>() {
       @Override
       public Iterator<TabletLocationState> iterator() {
diff --git 
a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java 
b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
index 6049b425cf..35b0893f1b 100644
--- a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
+++ b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
@@ -317,7 +317,7 @@ public boolean getCandidates(String continuePoint, 
List<String> result)
 
     @Override
     public Set<Table.ID> getTableIDs() {
-      return Tables.getIdToNameMap(getInstance()).keySet();
+      return Tables.getIdToNameMap(SimpleGarbageCollector.this).keySet();
     }
 
     @Override
diff --git 
a/server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
 
b/server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
index 714324d4c4..3f0eecf891 100644
--- 
a/server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
+++ 
b/server/gc/src/main/java/org/apache/accumulo/gc/replication/CloseWriteAheadLogReferences.java
@@ -104,7 +104,7 @@ public void run() {
     HashSet<String> closed = null;
     try {
       sw.start();
-      closed = getClosedLogs(conn);
+      closed = getClosedLogs();
     } finally {
       sw.stop();
       findWalsSpan.stop();
@@ -129,12 +129,10 @@ public void run() {
   /**
    * Construct the set of referenced WALs from zookeeper
    *
-   * @param conn
-   *          Connector
    * @return The Set of WALs that are referenced in the metadata table
    */
-  protected HashSet<String> getClosedLogs(Connector conn) {
-    WalStateManager wals = new WalStateManager(conn.getInstance(), 
ZooReaderWriter.getInstance());
+  protected HashSet<String> getClosedLogs() {
+    WalStateManager wals = new WalStateManager(context, 
ZooReaderWriter.getInstance());
 
     HashSet<String> result = new HashSet<>();
     try {
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java
 
b/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java
index 0baec1fceb..4b6c68c102 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/FateServiceHandler.java
@@ -118,8 +118,7 @@ public void executeFateOperation(TInfo tinfo, TCredentials 
c, long opid, FateOpe
             Namespaces.NOT_DEFAULT.and(Namespaces.NOT_ACCUMULO));
         String newName = validateNamespaceArgument(arguments.get(1), tableOp, 
null);
 
-        Namespace.ID namespaceId = 
ClientServiceHandler.checkNamespaceId(master.getInstance(),
-            oldName, tableOp);
+        Namespace.ID namespaceId = 
ClientServiceHandler.checkNamespaceId(master, oldName, tableOp);
         if (!master.security.canRenameNamespace(c, namespaceId, oldName, 
newName))
           throw new ThriftSecurityException(c.getPrincipal(), 
SecurityErrorCode.PERMISSION_DENIED);
 
@@ -132,8 +131,8 @@ public void executeFateOperation(TInfo tinfo, TCredentials 
c, long opid, FateOpe
         String namespace = validateNamespaceArgument(arguments.get(0), tableOp,
             Namespaces.NOT_DEFAULT.and(Namespaces.NOT_ACCUMULO));
 
-        Namespace.ID namespaceId = 
ClientServiceHandler.checkNamespaceId(master.getInstance(),
-            namespace, tableOp);
+        Namespace.ID namespaceId = 
ClientServiceHandler.checkNamespaceId(master, namespace,
+            tableOp);
         if (!master.security.canDeleteNamespace(c, namespaceId))
           throw new ThriftSecurityException(c.getPrincipal(), 
SecurityErrorCode.PERMISSION_DENIED);
 
@@ -149,8 +148,7 @@ public void executeFateOperation(TInfo tinfo, TCredentials 
c, long opid, FateOpe
         Namespace.ID namespaceId;
 
         try {
-          namespaceId = Namespaces.getNamespaceId(master.getInstance(),
-              Tables.qualify(tableName).getFirst());
+          namespaceId = Namespaces.getNamespaceId(master, 
Tables.qualify(tableName).getFirst());
         } catch (NamespaceNotFoundException e) {
           throw new ThriftTableOperationException(null, tableName, tableOp,
               TableOperationExceptionType.NAMESPACE_NOTFOUND, "");
@@ -188,8 +186,7 @@ public String invalidMessage(String argument) {
 
             });
 
-        Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), oldTableName,
-            tableOp);
+        Table.ID tableId = ClientServiceHandler.checkTableId(master, 
oldTableName, tableOp);
         Namespace.ID namespaceId = getNamespaceIdFromTableId(tableOp, tableId);
 
         final boolean canRename;
@@ -221,8 +218,7 @@ public String invalidMessage(String argument) {
         String tableName = validateTableNameArgument(arguments.get(1), 
tableOp, NOT_SYSTEM);
         Namespace.ID namespaceId;
         try {
-          namespaceId = Namespaces.getNamespaceId(master.getInstance(),
-              Tables.qualify(tableName).getFirst());
+          namespaceId = Namespaces.getNamespaceId(master, 
Tables.qualify(tableName).getFirst());
         } catch (NamespaceNotFoundException e) {
           // shouldn't happen, but possible once cloning between namespaces is 
supported
           throw new ThriftTableOperationException(null, tableName, tableOp,
@@ -270,8 +266,7 @@ public String invalidMessage(String argument) {
         TableOperation tableOp = TableOperation.DELETE;
         String tableName = validateTableNameArgument(arguments.get(0), 
tableOp, NOT_SYSTEM);
 
-        final Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), tableName,
-            tableOp);
+        final Table.ID tableId = ClientServiceHandler.checkTableId(master, 
tableName, tableOp);
         Namespace.ID namespaceId = getNamespaceIdFromTableId(tableOp, tableId);
 
         final boolean canDeleteTable;
@@ -336,8 +331,7 @@ public String invalidMessage(String argument) {
         Text startRow = ByteBufferUtil.toText(arguments.get(1));
         Text endRow = ByteBufferUtil.toText(arguments.get(2));
 
-        final Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), tableName,
-            tableOp);
+        final Table.ID tableId = ClientServiceHandler.checkTableId(master, 
tableName, tableOp);
         Namespace.ID namespaceId = getNamespaceIdFromTableId(tableOp, tableId);
 
         final boolean canMerge;
@@ -363,8 +357,7 @@ public String invalidMessage(String argument) {
         Text startRow = ByteBufferUtil.toText(arguments.get(1));
         Text endRow = ByteBufferUtil.toText(arguments.get(2));
 
-        final Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), tableName,
-            tableOp);
+        final Table.ID tableId = ClientServiceHandler.checkTableId(master, 
tableName, tableOp);
         Namespace.ID namespaceId = getNamespaceIdFromTableId(tableOp, tableId);
 
         final boolean canDeleteRange;
@@ -391,8 +384,7 @@ public String invalidMessage(String argument) {
         String failDir = ByteBufferUtil.toString(arguments.get(2));
         boolean setTime = 
Boolean.parseBoolean(ByteBufferUtil.toString(arguments.get(3)));
 
-        final Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), tableName,
-            tableOp);
+        final Table.ID tableId = ClientServiceHandler.checkTableId(master, 
tableName, tableOp);
         Namespace.ID namespaceId = getNamespaceIdFromTableId(tableOp, tableId);
 
         final boolean canBulkImport;
@@ -466,8 +458,7 @@ public String invalidMessage(String argument) {
         String exportDir = ByteBufferUtil.toString(arguments.get(1));
         Namespace.ID namespaceId;
         try {
-          namespaceId = Namespaces.getNamespaceId(master.getInstance(),
-              Tables.qualify(tableName).getFirst());
+          namespaceId = Namespaces.getNamespaceId(master, 
Tables.qualify(tableName).getFirst());
         } catch (NamespaceNotFoundException e) {
           throw new ThriftTableOperationException(null, tableName, tableOp,
               TableOperationExceptionType.NAMESPACE_NOTFOUND, "");
@@ -494,8 +485,7 @@ public String invalidMessage(String argument) {
         String tableName = validateTableNameArgument(arguments.get(0), 
tableOp, NOT_SYSTEM);
         String exportDir = ByteBufferUtil.toString(arguments.get(1));
 
-        Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), tableName,
-            tableOp);
+        Table.ID tableId = ClientServiceHandler.checkTableId(master, 
tableName, tableOp);
         Namespace.ID namespaceId = getNamespaceIdFromTableId(tableOp, tableId);
 
         final boolean canExport;
@@ -525,7 +515,7 @@ public String invalidMessage(String argument) {
 
         final boolean canBulkImport;
         try {
-          String tableName = Tables.getTableName(master.getInstance(), 
tableId);
+          String tableName = Tables.getTableName(master, tableId);
           canBulkImport = master.security.canBulkImport(c, tableId, tableName, 
dir, null,
               namespaceId);
         } catch (ThriftSecurityException e) {
diff --git a/server/master/src/main/java/org/apache/accumulo/master/Master.java 
b/server/master/src/main/java/org/apache/accumulo/master/Master.java
index 22e1b82ba1..1a4563ee56 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/Master.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/Master.java
@@ -410,7 +410,7 @@ private void upgradeZookeeper() {
           String ns = namespace.getFirst();
           Namespace.ID id = namespace.getSecond();
           log.debug("Upgrade creating namespace \"{}\" (ID: {})", ns, id);
-          if (!Namespaces.exists(getInstance(), id))
+          if (!Namespaces.exists(this, id))
             TableManager.prepareNewNamespaceState(getInstanceID(), id, ns, 
NodeExistsPolicy.SKIP);
         }
 
@@ -943,7 +943,7 @@ private void cleanupNonexistentMigrations(final Connector 
connector)
      */
     private void cleanupOfflineMigrations() {
       TableManager manager = TableManager.getInstance();
-      for (Table.ID tableId : Tables.getIdToNameMap(getInstance()).keySet()) {
+      for (Table.ID tableId : Tables.getIdToNameMap(Master.this).keySet()) {
         TableState state = manager.getTableState(tableId);
         if (TableState.OFFLINE == state) {
           clearMigrations(tableId);
@@ -1652,7 +1652,7 @@ public void sessionExpired() {}
     }
     TableManager manager = TableManager.getInstance();
 
-    for (Table.ID tableId : Tables.getIdToNameMap(getInstance()).keySet()) {
+    for (Table.ID tableId : Tables.getIdToNameMap(this).keySet()) {
       TableState state = manager.getTableState(tableId);
       if (state != null) {
         if (state == TableState.ONLINE)
@@ -1670,7 +1670,7 @@ public void sessionExpired() {}
   @Override
   public Collection<MergeInfo> merges() {
     List<MergeInfo> result = new ArrayList<>();
-    for (Table.ID tableId : Tables.getIdToNameMap(getInstance()).keySet()) {
+    for (Table.ID tableId : Tables.getIdToNameMap(this).keySet()) {
       result.add(getMergeInfo(tableId));
     }
     return result;
@@ -1781,7 +1781,7 @@ public boolean delegationTokensAvailable() {
 
   public void markDeadServerLogsAsClosed(Map<TServerInstance,List<Path>> 
logsForDeadServers)
       throws WalMarkerException {
-    WalStateManager mgr = new WalStateManager(getInstance(), 
ZooReaderWriter.getInstance());
+    WalStateManager mgr = new WalStateManager(this, 
ZooReaderWriter.getInstance());
     for (Entry<TServerInstance,List<Path>> server : 
logsForDeadServers.entrySet()) {
       for (Path path : server.getValue()) {
         mgr.closeWal(server.getKey(), path);
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
 
b/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
index 786331989a..600d61d5d6 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/MasterClientServiceHandler.java
@@ -33,13 +33,13 @@
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.BatchScanner;
 import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.IsolatedScanner;
 import org.apache.accumulo.core.client.RowIterator;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.DelegationTokenConfig;
 import org.apache.accumulo.core.client.impl.AuthenticationTokenIdentifier;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.DelegationTokenConfigSerializer;
 import org.apache.accumulo.core.client.impl.Namespace;
 import org.apache.accumulo.core.client.impl.Table;
@@ -444,7 +444,7 @@ private void alterNamespaceProperty(TCredentials c, String 
namespace, String pro
       throws ThriftSecurityException, ThriftTableOperationException {
 
     Namespace.ID namespaceId = null;
-    namespaceId = ClientServiceHandler.checkNamespaceId(master.getInstance(), 
namespace, op);
+    namespaceId = ClientServiceHandler.checkNamespaceId(master, namespace, op);
 
     if (!master.security.canAlterNamespace(c, namespaceId))
       throw new ThriftSecurityException(c.getPrincipal(), 
SecurityErrorCode.PERMISSION_DENIED);
@@ -458,7 +458,7 @@ private void alterNamespaceProperty(TCredentials c, String 
namespace, String pro
     } catch (KeeperException.NoNodeException e) {
       // race condition... namespace no longer exists? This call will throw an 
exception if the
       // namespace was deleted:
-      ClientServiceHandler.checkNamespaceId(master.getInstance(), namespace, 
op);
+      ClientServiceHandler.checkNamespaceId(master, namespace, op);
       log.info("Error altering namespace property", e);
       throw new ThriftTableOperationException(namespaceId.canonicalID(), 
namespace, op,
           TableOperationExceptionType.OTHER, "Problem altering 
namespaceproperty");
@@ -471,7 +471,7 @@ private void alterNamespaceProperty(TCredentials c, String 
namespace, String pro
 
   private void alterTableProperty(TCredentials c, String tableName, String 
property, String value,
       TableOperation op) throws ThriftSecurityException, 
ThriftTableOperationException {
-    final Table.ID tableId = 
ClientServiceHandler.checkTableId(master.getInstance(), tableName, op);
+    final Table.ID tableId = ClientServiceHandler.checkTableId(master, 
tableName, op);
     Namespace.ID namespaceId = getNamespaceIdFromTableId(op, tableId);
     if (!master.security.canAlterTable(c, tableId, namespaceId))
       throw new ThriftSecurityException(c.getPrincipal(), 
SecurityErrorCode.PERMISSION_DENIED);
@@ -485,7 +485,7 @@ private void alterTableProperty(TCredentials c, String 
tableName, String propert
     } catch (KeeperException.NoNodeException e) {
       // race condition... table no longer exists? This call will throw an 
exception if the table
       // was deleted:
-      ClientServiceHandler.checkTableId(master.getInstance(), tableName, op);
+      ClientServiceHandler.checkTableId(master, tableName, op);
       log.info("Error altering table property", e);
       throw new ThriftTableOperationException(tableId.canonicalID(), 
tableName, op,
           TableOperationExceptionType.OTHER, "Problem altering table 
property");
@@ -560,7 +560,7 @@ public boolean drainReplicationTable(TInfo tfino, 
TCredentials credentials, Stri
       throw new RuntimeException("Failed to obtain connector", e);
     }
 
-    final Text tableId = new Text(getTableId(master.getInstance(), 
tableName).getUtf8());
+    final Text tableId = new Text(getTableId(master, tableName).getUtf8());
 
     drainLog.trace("Waiting for {} to be replicated for {}", logsToWatch, 
tableId);
 
@@ -598,9 +598,9 @@ public boolean drainReplicationTable(TInfo tfino, 
TCredentials credentials, Stri
     }
   }
 
-  protected Table.ID getTableId(Instance instance, String tableName)
+  protected Table.ID getTableId(ClientContext context, String tableName)
       throws ThriftTableOperationException {
-    return ClientServiceHandler.checkTableId(instance, tableName, null);
+    return ClientServiceHandler.checkTableId(context, tableName, null);
   }
 
   /**
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
 
b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
index 03dec3789b..3f1bc82b89 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
@@ -148,7 +148,7 @@ public void run() {
     int[] oldCounts = new int[TabletState.values().length];
     EventCoordinator.Listener eventListener = 
this.master.nextEvent.getListener();
 
-    WalStateManager wals = new WalStateManager(master.getInstance(), 
ZooReaderWriter.getInstance());
+    WalStateManager wals = new WalStateManager(master, 
ZooReaderWriter.getInstance());
 
     while (this.master.stillMaster()) {
       // slow things down a little, otherwise we spam the logs when there are 
many wake-up events
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ClonePermissions.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ClonePermissions.java
index 95eb44ddcf..62e09856cb 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ClonePermissions.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ClonePermissions.java
@@ -60,7 +60,7 @@ public long isReady(long tid, Master environment) throws 
Exception {
     // this way concurrent users will not get a spurious pemission denied
     // error
     try {
-      return new CloneZookeeper(cloneInfo);
+      return new CloneZookeeper(cloneInfo, environment);
     } catch (NamespaceNotFoundException e) {
       throw new AcceptableThriftTableOperationException(null, 
cloneInfo.tableName,
           TableOperation.CLONE, TableOperationExceptionType.NAMESPACE_NOTFOUND,
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneZookeeper.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneZookeeper.java
index f991f5b6b0..dcf73abc7a 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneZookeeper.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneZookeeper.java
@@ -17,13 +17,13 @@
 package org.apache.accumulo.master.tableOps;
 
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Namespaces;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.TableOperation;
 import org.apache.accumulo.fate.Repo;
 import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeExistsPolicy;
 import org.apache.accumulo.master.Master;
-import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.server.tables.TableManager;
 
 class CloneZookeeper extends MasterRepo {
@@ -32,9 +32,10 @@
 
   private CloneInfo cloneInfo;
 
-  public CloneZookeeper(CloneInfo cloneInfo) throws NamespaceNotFoundException 
{
+  public CloneZookeeper(CloneInfo cloneInfo, ClientContext context)
+      throws NamespaceNotFoundException {
     this.cloneInfo = cloneInfo;
-    this.cloneInfo.namespaceId = 
Namespaces.getNamespaceId(HdfsZooInstance.getInstance(),
+    this.cloneInfo.namespaceId = Namespaces.getNamespaceId(context,
         Tables.qualify(this.cloneInfo.tableName).getFirst());
   }
 
@@ -53,8 +54,8 @@ public long isReady(long tid, Master environment) throws 
Exception {
     try {
       // write tableName & tableId to zookeeper
 
-      Utils.checkTableDoesNotExist(environment.getInstance(), 
cloneInfo.tableName,
-          cloneInfo.tableId, TableOperation.CLONE);
+      Utils.checkTableDoesNotExist(environment, cloneInfo.tableName, 
cloneInfo.tableId,
+          TableOperation.CLONE);
 
       TableManager.getInstance().cloneTable(cloneInfo.srcTableId, 
cloneInfo.tableId,
           cloneInfo.tableName, cloneInfo.namespaceId, 
cloneInfo.propertiesToSet,
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java
index ee5e1fb84e..dfd5f0cb21 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportPopulateZookeeper.java
@@ -76,11 +76,11 @@ public long isReady(long tid, Master environment) throws 
Exception {
       // write tableName & tableId to zookeeper
       Instance instance = env.getInstance();
 
-      Utils.checkTableDoesNotExist(instance, tableInfo.tableName, 
tableInfo.tableId,
+      Utils.checkTableDoesNotExist(env, tableInfo.tableName, tableInfo.tableId,
           TableOperation.CREATE);
 
       String namespace = Tables.qualify(tableInfo.tableName).getFirst();
-      Namespace.ID namespaceId = Namespaces.getNamespaceId(instance, 
namespace);
+      Namespace.ID namespaceId = Namespaces.getNamespaceId(env, namespace);
       TableManager.getInstance().addTable(tableInfo.tableId, namespaceId, 
tableInfo.tableName,
           NodeExistsPolicy.OVERWRITE);
 
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeper.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeper.java
index 2301d33d89..1e106b2ab3 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeper.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeper.java
@@ -51,7 +51,7 @@ public long isReady(long tid, Master environment) throws 
Exception {
       // write tableName & tableId to zookeeper
       Instance instance = master.getInstance();
 
-      Utils.checkTableDoesNotExist(instance, tableInfo.tableName, 
tableInfo.tableId,
+      Utils.checkTableDoesNotExist(master, tableInfo.tableName, 
tableInfo.tableId,
           TableOperation.CREATE);
 
       TableManager.getInstance().addTable(tableInfo.tableId, 
tableInfo.namespaceId,
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeperWithNamespace.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeperWithNamespace.java
index 3d1dcc80e5..94986e314a 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeperWithNamespace.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/PopulateZookeeperWithNamespace.java
@@ -18,7 +18,6 @@
 
 import java.util.Map.Entry;
 
-import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.core.client.impl.thrift.TableOperation;
 import org.apache.accumulo.fate.Repo;
@@ -48,19 +47,17 @@ public long isReady(long id, Master environment) throws 
Exception {
 
     Utils.tableNameLock.lock();
     try {
-      Instance instance = master.getInstance();
-
-      Utils.checkNamespaceDoesNotExist(instance, namespaceInfo.namespaceName,
+      Utils.checkNamespaceDoesNotExist(master, namespaceInfo.namespaceName,
           namespaceInfo.namespaceId, TableOperation.CREATE);
 
-      TableManager.prepareNewNamespaceState(instance.getInstanceID(), 
namespaceInfo.namespaceId,
+      TableManager.prepareNewNamespaceState(master.getInstanceID(), 
namespaceInfo.namespaceId,
           namespaceInfo.namespaceName, NodeExistsPolicy.OVERWRITE);
 
       for (Entry<String,String> entry : namespaceInfo.props.entrySet())
         NamespacePropUtil.setNamespaceProperty(namespaceInfo.namespaceId, 
entry.getKey(),
             entry.getValue());
 
-      Tables.clearCache(instance);
+      Tables.clearCache(master);
 
       return new FinishCreateNamespace(namespaceInfo);
     } finally {
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java
index f795e9ff4d..eb2b780eab 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameNamespace.java
@@ -17,7 +17,6 @@
 package org.apache.accumulo.master.tableOps;
 
 import org.apache.accumulo.core.Constants;
-import org.apache.accumulo.core.client.Instance;
 import 
org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException;
 import org.apache.accumulo.core.client.impl.Namespace;
 import org.apache.accumulo.core.client.impl.Tables;
@@ -52,13 +51,11 @@ public RenameNamespace(Namespace.ID namespaceId, String 
oldName, String newName)
   @Override
   public Repo<Master> call(long id, Master master) throws Exception {
 
-    Instance instance = master.getInstance();
-
     IZooReaderWriter zoo = ZooReaderWriter.getInstance();
 
     Utils.tableNameLock.lock();
     try {
-      Utils.checkNamespaceDoesNotExist(instance, newName, namespaceId, 
TableOperation.RENAME);
+      Utils.checkNamespaceDoesNotExist(master, newName, namespaceId, 
TableOperation.RENAME);
 
       final String tap = ZooUtil.getRoot(master.getInstanceID()) + 
Constants.ZNAMESPACES + "/"
           + namespaceId + Constants.ZNAMESPACE_NAME;
@@ -76,7 +73,7 @@ public RenameNamespace(Namespace.ID namespaceId, String 
oldName, String newName)
           return newName.getBytes();
         }
       });
-      Tables.clearCache(instance);
+      Tables.clearCache(master);
     } finally {
       Utils.tableNameLock.unlock();
       Utils.unreserveNamespace(namespaceId, id, true);
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java
 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java
index 6e2a3bd039..03e14cf786 100644
--- 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java
+++ 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/RenameTable.java
@@ -66,8 +66,8 @@ public RenameTable(Namespace.ID namespaceId, Table.ID 
tableId, String oldTableNa
     Pair<String,String> qualifiedNewTableName = Tables.qualify(newTableName);
 
     // ensure no attempt is made to rename across namespaces
-    if (newTableName.contains(".") && !namespaceId
-        .equals(Namespaces.getNamespaceId(instance, 
qualifiedNewTableName.getFirst())))
+    if (newTableName.contains(".")
+        && !namespaceId.equals(Namespaces.getNamespaceId(master, 
qualifiedNewTableName.getFirst())))
       throw new AcceptableThriftTableOperationException(tableId.canonicalID(), 
oldTableName,
           TableOperation.RENAME, TableOperationExceptionType.INVALID_NAME,
           "Namespace in new table name does not match the old table name");
@@ -76,7 +76,7 @@ public RenameTable(Namespace.ID namespaceId, Table.ID 
tableId, String oldTableNa
 
     Utils.tableNameLock.lock();
     try {
-      Utils.checkTableDoesNotExist(instance, newTableName, tableId, 
TableOperation.RENAME);
+      Utils.checkTableDoesNotExist(master, newTableName, tableId, 
TableOperation.RENAME);
 
       final String newName = qualifiedNewTableName.getSecond();
       final String oldName = qualifiedOldTableName.getSecond();
diff --git 
a/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java 
b/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java
index 5626978eb3..b8fa3772d5 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/Utils.java
@@ -28,6 +28,7 @@
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.impl.AbstractId;
 import 
org.apache.accumulo.core.client.impl.AcceptableThriftTableOperationException;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Namespace;
 import org.apache.accumulo.core.client.impl.Namespaces;
 import org.apache.accumulo.core.client.impl.Table;
@@ -49,10 +50,10 @@
   private static final byte[] ZERO_BYTE = {'0'};
   private static final Logger log = LoggerFactory.getLogger(Utils.class);
 
-  static void checkTableDoesNotExist(Instance instance, String tableName, 
Table.ID tableId,
+  static void checkTableDoesNotExist(ClientContext context, String tableName, 
Table.ID tableId,
       TableOperation operation) throws AcceptableThriftTableOperationException 
{
 
-    Table.ID id = Tables.getNameToIdMap(instance).get(tableName);
+    Table.ID id = Tables.getNameToIdMap(context).get(tableName);
 
     if (id != null && !id.equals(tableId))
       throw new AcceptableThriftTableOperationException(null, tableName, 
operation,
@@ -170,11 +171,11 @@ public static Lock getReadLock(AbstractId tableId, long 
tid) throws Exception {
     return Utils.getLock(tableId, tid, false);
   }
 
-  static void checkNamespaceDoesNotExist(Instance instance, String namespace,
+  static void checkNamespaceDoesNotExist(ClientContext context, String 
namespace,
       Namespace.ID namespaceId, TableOperation operation)
       throws AcceptableThriftTableOperationException {
 
-    Namespace.ID n = Namespaces.lookupNamespaceId(instance, namespace);
+    Namespace.ID n = Namespaces.lookupNamespaceId(context, namespace);
 
     if (n != null && !n.equals(namespaceId))
       throw new AcceptableThriftTableOperationException(null, namespace, 
operation,
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
index 75b10f88d1..8bc0495fe9 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/problems/ProblemsResource.java
@@ -37,7 +37,6 @@
 import org.apache.accumulo.core.client.impl.Table;
 import org.apache.accumulo.core.client.impl.Tables;
 import org.apache.accumulo.monitor.Monitor;
-import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.server.problems.ProblemReport;
 import org.apache.accumulo.server.problems.ProblemReports;
 import org.apache.accumulo.server.problems.ProblemType;
@@ -81,8 +80,7 @@ public ProblemSummary getSummary() {
           }
         }
 
-        String tableName = 
Tables.getPrintableTableInfoFromId(HdfsZooInstance.getInstance(),
-            entry.getKey());
+        String tableName = 
Tables.getPrintableTableInfoFromId(Monitor.getContext(), entry.getKey());
 
         problems.addProblemSummary(new ProblemSummaryInformation(tableName, 
entry.getKey(),
             readCount, writeCount, loadCount));
@@ -132,7 +130,7 @@ public ProblemDetail getDetails() {
         while (iter.hasNext())
           problemReports.add(iter.next());
         for (ProblemReport pr : problemReports) {
-          String tableName = 
Tables.getPrintableTableInfoFromId(HdfsZooInstance.getInstance(),
+          String tableName = 
Tables.getPrintableTableInfoFromId(Monitor.getContext(),
               pr.getTableId());
 
           problems.addProblemDetail(
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java
index 82d2692fc3..852209e759 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/replication/ReplicationResource.java
@@ -112,7 +112,7 @@
     // Number of files per target we have to replicate
     Map<ReplicationTarget,Long> targetCounts = new HashMap<>();
 
-    Map<String,Table.ID> tableNameToId = 
Tables.getNameToIdMap(conn.getInstance());
+    Map<String,Table.ID> tableNameToId = 
Tables.getNameToIdMap(Monitor.getContext());
     Map<Table.ID,String> tableIdToName = invert(tableNameToId);
 
     for (String table : tops.list()) {
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
index 321c62ff67..b19beae19e 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tables/TablesResource.java
@@ -45,7 +45,6 @@
 import org.apache.accumulo.monitor.Monitor;
 import org.apache.accumulo.monitor.rest.tservers.TabletServer;
 import org.apache.accumulo.monitor.rest.tservers.TabletServers;
-import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.server.master.state.MetaDataTableScanner;
 import org.apache.accumulo.server.master.state.TabletLocationState;
 import org.apache.accumulo.server.tables.TableManager;
@@ -83,7 +82,7 @@ public static TableInformationList getTables() {
     TableManager tableManager = TableManager.getInstance();
 
     // Add tables to the list
-    for (Map.Entry<String,Table.ID> entry : 
Tables.getNameToIdMap(HdfsZooInstance.getInstance())
+    for (Map.Entry<String,Table.ID> entry : 
Tables.getNameToIdMap(Monitor.getContext())
         .entrySet()) {
       String tableName = entry.getKey();
       Table.ID tableId = entry.getValue();
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
index bb5eef3a80..da4fcc62d9 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/tservers/TabletServerResource.java
@@ -56,7 +56,6 @@
 import org.apache.accumulo.core.zookeeper.ZooUtil;
 import org.apache.accumulo.monitor.Monitor;
 import org.apache.accumulo.monitor.rest.master.MasterResource;
-import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.server.master.state.DeadServerList;
 import org.apache.accumulo.server.util.ActionStatsUpdator;
 
@@ -326,7 +325,7 @@ private CurrentTabletResults doCurrentTabletResults(double 
currentMinorAvg,
       String obscuredExtent = 
Base64.getEncoder().encodeToString(digester.digest());
       String displayExtent = String.format("[%s]", obscuredExtent);
 
-      String tableName = 
Tables.getPrintableTableInfoFromId(HdfsZooInstance.getInstance(), tableId);
+      String tableName = 
Tables.getPrintableTableInfoFromId(Monitor.getContext(), tableId);
 
       currentOperations.add(
           new CurrentOperations(tableName, tableId, displayExtent, 
info.numEntries, info.ingestRate,
diff --git 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java
index 0e7c08df3f..2bfac79c7a 100644
--- 
a/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java
+++ 
b/server/monitor/src/main/java/org/apache/accumulo/monitor/view/WebViews.java
@@ -292,8 +292,7 @@ private void addExternalResources(Map<String,Object> model) 
{
       @PathParam("tableID") @NotNull @Pattern(regexp = 
ALPHA_NUM_REGEX_TABLE_ID) String tableID)
       throws TableNotFoundException {
 
-    String tableName = Tables.getTableName(Monitor.getContext().getInstance(),
-        Table.ID.of(tableID));
+    String tableName = Tables.getTableName(Monitor.getContext(), 
Table.ID.of(tableID));
 
     Map<String,Object> model = getModel();
     model.put("title", "Table Status");
diff --git 
a/server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java 
b/server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java
index 7882d4b784..9814a3ce13 100644
--- 
a/server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java
+++ 
b/server/monitor/src/test/java/org/apache/accumulo/monitor/it/WebViewsIT.java
@@ -109,7 +109,7 @@ public void testGetTablesConstraintPassing() throws 
Exception {
     expect(Monitor.getContext()).andReturn(contextMock).anyTimes();
 
     PowerMock.mockStatic(Tables.class);
-    expect(Tables.getTableName(instanceMock, 
Table.ID.of("foo"))).andReturn("bar");
+    expect(Tables.getTableName(contextMock, 
Table.ID.of("foo"))).andReturn("bar");
     PowerMock.replayAll();
     org.easymock.EasyMock.replay(instanceMock, contextMock);
 
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 1d416b4317..1e56ed848b 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -369,7 +369,7 @@ public TabletServer(Instance instance, 
ServerConfigurationFactory confFactory, V
     log.info("Version " + Constants.VERSION);
     log.info("Instance " + getInstanceID());
     this.sessionManager = new SessionManager(aconf);
-    this.logSorter = new LogSorter(instance, fs, aconf);
+    this.logSorter = new LogSorter(this, fs, aconf);
     this.replWorker = new ReplicationWorker(this, fs);
     this.statsKeeper = new TabletStatsKeeper();
     SimpleTimer.getInstance(aconf).schedule(new Runnable() {
@@ -432,7 +432,7 @@ public void run() {
         TabletLocator.clearLocators();
       }
     }, jitter(TIME_BETWEEN_LOCATOR_CACHE_CLEARS), 
jitter(TIME_BETWEEN_LOCATOR_CACHE_CLEARS));
-    walMarker = new WalStateManager(instance, ZooReaderWriter.getInstance());
+    walMarker = new WalStateManager(this, ZooReaderWriter.getInstance());
 
     // Create the secret manager
     setSecretManager(new AuthenticationTokenSecretManager(instance,
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
index f8f3d495f8..33d9138ac9 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
@@ -29,7 +29,7 @@
 import java.util.concurrent.ThreadPoolExecutor;
 
 import org.apache.accumulo.core.Constants;
-import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.conf.AccumuloConfiguration;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.master.thrift.RecoveryStatus;
@@ -217,11 +217,11 @@ synchronized long getBytesCopied() throws IOException {
   }
 
   ThreadPoolExecutor threadPool;
-  private final Instance instance;
+  private final ClientContext context;
   private double walBlockSize;
 
-  public LogSorter(Instance instance, VolumeManager fs, AccumuloConfiguration 
conf) {
-    this.instance = instance;
+  public LogSorter(ClientContext context, VolumeManager fs, 
AccumuloConfiguration conf) {
+    this.context = context;
     this.fs = fs;
     this.conf = conf;
     int threadPoolSize = conf.getCount(Property.TSERV_RECOVERY_MAX_CONCURRENT);
@@ -232,7 +232,7 @@ public LogSorter(Instance instance, VolumeManager fs, 
AccumuloConfiguration conf
   public void startWatchingForRecoveryLogs(ThreadPoolExecutor 
distWorkQThreadPool)
       throws KeeperException, InterruptedException {
     this.threadPool = distWorkQThreadPool;
-    new DistributedWorkQueue(ZooUtil.getRoot(instance) + Constants.ZRECOVERY, 
conf)
+    new DistributedWorkQueue(ZooUtil.getRoot(context.getInstanceID()) + 
Constants.ZRECOVERY, conf)
         .startProcessing(new LogProcessor(), this.threadPool);
   }
 
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java
index 02511129d4..d6aa017eaa 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ConfigCommand.java
@@ -167,8 +167,8 @@ public int execute(final String fullCommand, final 
CommandLine cl, final Shell s
 
       final TreeMap<String,String> namespaceConfig = new TreeMap<>();
       if (tableName != null) {
-        String n = Namespaces.getNamespaceName(shellState.getInstance(), 
Tables.getNamespaceId(
-            shellState.getInstance(), 
Tables.getTableId(shellState.getInstance(), tableName)));
+        String n = Namespaces.getNamespaceName(shellState.getContext(), 
Tables.getNamespaceId(
+            shellState.getInstance(), 
Tables.getTableId(shellState.getContext(), tableName)));
         for (Entry<String,String> e : 
shellState.getConnector().namespaceOperations()
             .getProperties(n)) {
           namespaceConfig.put(e.getKey(), e.getValue());
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DUCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DUCommand.java
index 31d7ae3041..3f83ecab52 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/DUCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/DUCommand.java
@@ -21,7 +21,6 @@
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.admin.DiskUsage;
@@ -50,10 +49,9 @@ public int execute(final String fullCommand, final 
CommandLine cl, final Shell s
     }
 
     if (cl.hasOption(optNamespace.getOpt())) {
-      Instance instance = shellState.getInstance();
-      Namespace.ID namespaceId = Namespaces.getNamespaceId(instance,
+      Namespace.ID namespaceId = 
Namespaces.getNamespaceId(shellState.getContext(),
           cl.getOptionValue(optNamespace.getOpt()));
-      tables.addAll(Namespaces.getTableNames(instance, namespaceId));
+      tables.addAll(Namespaces.getTableNames(shellState.getContext(), 
namespaceId));
     }
 
     boolean prettyPrint = cl.hasOption(optHumanReadble.getOpt());
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteNamespaceCommand.java
 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteNamespaceCommand.java
index feedb2aab6..ac5a6a63db 100644
--- 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteNamespaceCommand.java
+++ 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteNamespaceCommand.java
@@ -64,8 +64,8 @@ protected void doTableOp(final Shell shellState, final String 
namespace, boolean
     boolean resetContext = false;
     String currentTable = shellState.getTableName();
 
-    Namespace.ID namespaceId = 
Namespaces.getNamespaceId(shellState.getInstance(), namespace);
-    List<String> tables = Namespaces.getTableNames(shellState.getInstance(), 
namespaceId);
+    Namespace.ID namespaceId = 
Namespaces.getNamespaceId(shellState.getContext(), namespace);
+    List<String> tables = Namespaces.getTableNames(shellState.getContext(), 
namespaceId);
     resetContext = tables.contains(currentTable);
 
     if (force)
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/RenameNamespaceCommand.java
 
b/shell/src/main/java/org/apache/accumulo/shell/commands/RenameNamespaceCommand.java
index 94e940998b..c8df11c413 100644
--- 
a/shell/src/main/java/org/apache/accumulo/shell/commands/RenameNamespaceCommand.java
+++ 
b/shell/src/main/java/org/apache/accumulo/shell/commands/RenameNamespaceCommand.java
@@ -45,16 +45,16 @@ public int execute(final String fullCommand, final 
CommandLine cl, final Shell s
     boolean resetContext = false;
     Table.ID currentTableId = null;
     if (!(shellState.getTableName() == null) && 
!shellState.getTableName().isEmpty()) {
-      Namespace.ID namespaceId = 
Namespaces.getNamespaceId(shellState.getInstance(), old);
-      List<Table.ID> tableIds = 
Namespaces.getTableIds(shellState.getInstance(), namespaceId);
-      currentTableId = Tables.getTableId(shellState.getInstance(), 
shellState.getTableName());
+      Namespace.ID namespaceId = 
Namespaces.getNamespaceId(shellState.getContext(), old);
+      List<Table.ID> tableIds = 
Namespaces.getTableIds(shellState.getContext(), namespaceId);
+      currentTableId = Tables.getTableId(shellState.getContext(), 
shellState.getTableName());
       resetContext = tableIds.contains(currentTableId);
     }
 
     shellState.getConnector().namespaceOperations().rename(old, newer);
 
     if (resetContext) {
-      shellState.setTableName(Tables.getTableName(shellState.getInstance(), 
currentTableId));
+      shellState.setTableName(Tables.getTableName(shellState.getContext(), 
currentTableId));
     }
 
     return 0;
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/TableOperation.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/TableOperation.java
index 54c0e0f168..0249ba03aa 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/TableOperation.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/TableOperation.java
@@ -21,7 +21,6 @@
 import java.util.SortedSet;
 import java.util.TreeSet;
 
-import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.impl.Namespace;
 import org.apache.accumulo.core.client.impl.Namespaces;
@@ -57,11 +56,10 @@ public int execute(final String fullCommand, final 
CommandLine cl, final Shell s
     } else if (cl.hasOption(optTableName.getOpt())) {
       tableSet.add(cl.getOptionValue(optTableName.getOpt()));
     } else if (cl.hasOption(optNamespace.getOpt())) {
-      Instance instance = shellState.getInstance();
-      Namespace.ID namespaceId = Namespaces.getNamespaceId(instance,
+      Namespace.ID namespaceId = 
Namespaces.getNamespaceId(shellState.getContext(),
           cl.getOptionValue(optNamespace.getOpt()));
-      for (Table.ID tableId : Namespaces.getTableIds(instance, namespaceId)) {
-        tableSet.add(Tables.getTableName(instance, tableId));
+      for (Table.ID tableId : Namespaces.getTableIds(shellState.getContext(), 
namespaceId)) {
+        tableSet.add(Tables.getTableName(shellState.getContext(), tableId));
       }
     } else if (useCommandLine && cl.getArgs().length > 0) {
       for (String tableName : cl.getArgs()) {
diff --git a/test/src/main/java/org/apache/accumulo/test/ListTables.java 
b/test/src/main/java/org/apache/accumulo/test/ListTables.java
index 4aa1de0dd8..edce2807c3 100644
--- a/test/src/main/java/org/apache/accumulo/test/ListTables.java
+++ b/test/src/main/java/org/apache/accumulo/test/ListTables.java
@@ -29,7 +29,7 @@
   public static void main(String[] args) throws Exception {
     ClientOpts opts = new ClientOpts();
     opts.parseArgs(ListTables.class.getName(), args);
-    for (Entry<String,Table.ID> table : 
Tables.getNameToIdMap(opts.getInstance()).entrySet())
+    for (Entry<String,Table.ID> table : 
Tables.getNameToIdMap(opts.getClientContext()).entrySet())
       System.out.println(table.getKey() + " => " + table.getValue());
   }
 }
diff --git a/test/src/main/java/org/apache/accumulo/test/UnusedWALIT.java 
b/test/src/main/java/org/apache/accumulo/test/UnusedWALIT.java
index c03b6ddb84..609a571f50 100644
--- a/test/src/main/java/org/apache/accumulo/test/UnusedWALIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/UnusedWALIT.java
@@ -27,6 +27,7 @@
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.conf.Property;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
@@ -78,6 +79,7 @@ public void test() throws Exception {
     c.tableOperations().create(bigTable);
     c.tableOperations().create(lilTable);
 
+    ClientContext context = getClientContext();
     Instance i = c.getInstance();
     zk = new ZooReaderWriter(c.info().getZooKeepers(), 
c.info().getZooKeepersSessionTimeOut(), "");
 
@@ -86,11 +88,11 @@ public void test() throws Exception {
     scanSomeData(c, bigTable, 0, 10, 0, 10);
     writeSomeData(c, lilTable, 0, 1, 0, 1);
     scanSomeData(c, lilTable, 0, 1, 0, 1);
-    assertEquals(2, getWALCount(i, zk));
+    assertEquals(2, getWALCount(context, zk));
 
     // roll the logs by pushing data into bigTable
     writeSomeData(c, bigTable, 0, 3000, 0, 1000);
-    assertEquals(3, getWALCount(i, zk));
+    assertEquals(3, getWALCount(context, zk));
 
     // put some data in the latest log
     writeSomeData(c, lilTable, 1, 10, 0, 10);
@@ -130,8 +132,8 @@ private void scanSomeData(Connector c, String table, int 
startRow, int rowCount,
     }
   }
 
-  private int getWALCount(Instance i, ZooReaderWriter zk) throws Exception {
-    WalStateManager wals = new WalStateManager(i, zk);
+  private int getWALCount(ClientContext context, ZooReaderWriter zk) throws 
Exception {
+    WalStateManager wals = new WalStateManager(context, zk);
     int result = 0;
     for (Entry<TServerInstance,List<UUID>> entry : 
wals.getAllMarkers().entrySet()) {
       result += entry.getValue().size();
diff --git a/test/src/main/java/org/apache/accumulo/test/VolumeIT.java 
b/test/src/main/java/org/apache/accumulo/test/VolumeIT.java
index cc36a30a6c..45914451c4 100644
--- a/test/src/main/java/org/apache/accumulo/test/VolumeIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/VolumeIT.java
@@ -453,7 +453,7 @@ private void verifyVolumesUsed(String tableName, boolean 
shouldExist, Path... pa
         Instance i = conn.getInstance();
         ZooReaderWriter zk = new ZooReaderWriter(conn.info().getZooKeepers(),
             conn.info().getZooKeepersSessionTimeOut(), "");
-        WalStateManager wals = new WalStateManager(i, zk);
+        WalStateManager wals = new WalStateManager(getClientContext(), zk);
         try {
           outer: for (Entry<Path,WalState> entry : 
wals.getAllState().entrySet()) {
             for (Path path : paths) {
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/ConfigurableMacBase.java
 
b/test/src/main/java/org/apache/accumulo/test/functional/ConfigurableMacBase.java
index 089ecb0c8d..90ee9c02f2 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/ConfigurableMacBase.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/ConfigurableMacBase.java
@@ -29,6 +29,7 @@
 import org.apache.accumulo.core.client.AccumuloSecurityException;
 import org.apache.accumulo.core.client.ClientInfo;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.security.tokens.PasswordToken;
 import org.apache.accumulo.core.conf.ClientProperty;
 import org.apache.accumulo.core.conf.Property;
@@ -190,6 +191,10 @@ protected Connector getConnector() throws 
AccumuloException, AccumuloSecurityExc
     return getCluster().getConnector("root", new PasswordToken(ROOT_PASSWORD));
   }
 
+  protected ClientContext getClientContext() {
+    return new ClientContext(getClientInfo());
+  }
+
   protected ClientInfo getClientInfo() {
     return Connector.builder()
         .forInstance(getCluster().getInstanceName(), 
getCluster().getZooKeepers())
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
 
b/test/src/main/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
index 861b38bd51..8cceed117e 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/TabletStateChangeIteratorIT.java
@@ -244,7 +244,7 @@ private void dropTables(String... tables)
     @Override
     public Set<Table.ID> onlineTables() {
       ClientContext context = new ClientContext(getClientInfo());
-      Set<Table.ID> onlineTables = 
Tables.getIdToNameMap(context.getInstance()).keySet();
+      Set<Table.ID> onlineTables = Tables.getIdToNameMap(context).keySet();
       return Sets.filter(onlineTables,
           tableId -> Tables.getTableState(context, tableId) == 
TableState.ONLINE);
     }
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/WALSunnyDayIT.java 
b/test/src/main/java/org/apache/accumulo/test/functional/WALSunnyDayIT.java
index c5c78a63ea..c6bd8415bd 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/WALSunnyDayIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/WALSunnyDayIT.java
@@ -42,6 +42,7 @@
 import org.apache.accumulo.core.client.BatchWriter;
 import org.apache.accumulo.core.client.Connector;
 import org.apache.accumulo.core.client.Scanner;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Mutation;
 import org.apache.accumulo.core.data.Value;
@@ -95,20 +96,21 @@ public void test() throws Exception {
     MiniAccumuloClusterImpl mac = getCluster();
     MiniAccumuloClusterControl control = mac.getClusterControl();
     control.stop(GARBAGE_COLLECTOR);
-    Connector c = getConnector();
+    ClientContext context = getClientContext();
+    Connector c = context.getConnector();
     String tableName = getUniqueNames(1)[0];
     c.tableOperations().create(tableName);
     writeSomeData(c, tableName, 1, 1);
 
     // wal markers are added lazily
-    Map<String,Boolean> wals = getWALsAndAssertCount(c, 2);
+    Map<String,Boolean> wals = getWALsAndAssertCount(context, 2);
     for (Boolean b : wals.values()) {
       assertTrue("logs should be in use", b);
     }
 
     // roll log, get a new next
     writeSomeData(c, tableName, 1001, 50);
-    Map<String,Boolean> walsAfterRoll = getWALsAndAssertCount(c, 3);
+    Map<String,Boolean> walsAfterRoll = getWALsAndAssertCount(context, 3);
     assertTrue("new WALs should be a superset of the old WALs",
         walsAfterRoll.keySet().containsAll(wals.keySet()));
     assertEquals("all WALs should be in use", 3, 
countTrue(walsAfterRoll.values()));
@@ -119,14 +121,14 @@ public void test() throws Exception {
     }
     sleepUninterruptibly(1, TimeUnit.SECONDS);
     // rolled WAL is no longer in use, but needs to be GC'd
-    Map<String,Boolean> walsAfterflush = getWALsAndAssertCount(c, 3);
+    Map<String,Boolean> walsAfterflush = getWALsAndAssertCount(context, 3);
     assertEquals("inUse should be 2", 2, countTrue(walsAfterflush.values()));
 
     // let the GC run for a little bit
     control.start(GARBAGE_COLLECTOR);
     sleepUninterruptibly(5, TimeUnit.SECONDS);
     // make sure the unused WAL goes away
-    getWALsAndAssertCount(c, 2);
+    getWALsAndAssertCount(context, 2);
     control.stop(GARBAGE_COLLECTOR);
     // restart the tserver, but don't run recovery on all tablets
     control.stop(TABLET_SERVER);
@@ -149,12 +151,12 @@ public void test() throws Exception {
     verifySomeData(c, tableName, 1001 * 50 + 1);
     writeSomeData(c, tableName, 100, 100);
 
-    Map<String,Boolean> walsAfterRestart = getWALsAndAssertCount(c, 4);
+    Map<String,Boolean> walsAfterRestart = getWALsAndAssertCount(context, 4);
     // log.debug("wals after " + walsAfterRestart);
     assertEquals("used WALs after restart should be 4", 4, 
countTrue(walsAfterRestart.values()));
     control.start(GARBAGE_COLLECTOR);
     sleepUninterruptibly(5, TimeUnit.SECONDS);
-    Map<String,Boolean> walsAfterRestartAndGC = getWALsAndAssertCount(c, 2);
+    Map<String,Boolean> walsAfterRestartAndGC = getWALsAndAssertCount(context, 
2);
     assertEquals("logs in use should be 2", 2, 
countTrue(walsAfterRestartAndGC.values()));
   }
 
@@ -221,7 +223,7 @@ private void writeSomeData(Connector conn, String 
tableName, int row, int col) t
   private final int TIMES_TO_COUNT = 20;
   private final int PAUSE_BETWEEN_COUNTS = 100;
 
-  private Map<String,Boolean> getWALsAndAssertCount(Connector c, int 
expectedCount)
+  private Map<String,Boolean> getWALsAndAssertCount(ClientContext c, int 
expectedCount)
       throws Exception {
     // see https://issues.apache.org/jira/browse/ACCUMULO-4110. Sometimes this 
test counts the logs
     // before
@@ -259,11 +261,11 @@ private int getWaitFactor() {
     return waitLonger;
   }
 
-  private Map<String,Boolean> _getWals(Connector c) throws Exception {
+  private Map<String,Boolean> _getWals(ClientContext c) throws Exception {
     Map<String,Boolean> result = new HashMap<>();
-    ZooReaderWriter zk = new ZooReaderWriter(c.info().getZooKeepers(),
-        c.info().getZooKeepersSessionTimeOut(), "");
-    WalStateManager wals = new WalStateManager(c.getInstance(), zk);
+    ZooReaderWriter zk = new ZooReaderWriter(c.getClientInfo().getZooKeepers(),
+        c.getClientInfo().getZooKeepersSessionTimeOut(), "");
+    WalStateManager wals = new WalStateManager(c, zk);
     for (Entry<Path,WalState> entry : wals.getAllState().entrySet()) {
       // WALs are in use if they are not unreferenced
       result.put(entry.getKey().toString(), entry.getValue() != 
WalState.UNREFERENCED);
diff --git 
a/test/src/main/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
 
b/test/src/main/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
index a1192c2c2b..6efa312a5f 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/replication/GarbageCollectorCommunicatesWithTServersIT.java
@@ -100,14 +100,15 @@ public void configure(MiniAccumuloConfigImpl cfg, 
Configuration coreSite) {
    * Fetch all of the WALs referenced by tablets in the metadata table for 
this table
    */
   private Set<String> getWalsForTable(String tableName) throws Exception {
-    final Connector conn = getConnector();
+    final ClientContext context = new ClientContext(getClientInfo());
+    final Connector conn = context.getConnector();
     final String tableId = conn.tableOperations().tableIdMap().get(tableName);
 
     Assert.assertNotNull("Could not determine table ID for " + tableName, 
tableId);
 
     ZooReaderWriter zk = new ZooReaderWriter(conn.info().getZooKeepers(),
         conn.info().getZooKeepersSessionTimeOut(), "");
-    WalStateManager wals = new WalStateManager(conn.getInstance(), zk);
+    WalStateManager wals = new WalStateManager(context, zk);
 
     Set<String> result = new HashSet<>();
     for (Entry<Path,WalState> entry : wals.getAllState().entrySet()) {
diff --git 
a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationIT.java 
b/test/src/main/java/org/apache/accumulo/test/replication/ReplicationIT.java
index 6f01a5f8b8..4b75487863 100644
--- a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/replication/ReplicationIT.java
@@ -48,6 +48,7 @@
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.client.TableOfflineException;
 import org.apache.accumulo.core.client.admin.TableOperations;
+import org.apache.accumulo.core.client.impl.ClientContext;
 import org.apache.accumulo.core.client.impl.Table;
 import org.apache.accumulo.core.conf.ClientProperty;
 import org.apache.accumulo.core.conf.Property;
@@ -141,8 +142,9 @@ public void configure(MiniAccumuloConfigImpl cfg, 
Configuration hadoopCoreSite)
     hadoopCoreSite.set("fs.file.impl", RawLocalFileSystem.class.getName());
   }
 
-  private Multimap<String,Table.ID> getLogs(Connector conn) throws Exception {
+  private Multimap<String,Table.ID> getLogs(ClientContext context) throws 
Exception {
     // Map of server to tableId
+    Connector conn = context.getConnector();
     Multimap<TServerInstance,String> serverToTableID = HashMultimap.create();
     try (Scanner scanner = conn.createScanner(MetadataTable.NAME, 
Authorizations.EMPTY)) {
       scanner.setRange(MetadataSchema.TabletsSection.getRange());
@@ -157,7 +159,7 @@ public void configure(MiniAccumuloConfigImpl cfg, 
Configuration hadoopCoreSite)
       Multimap<String,Table.ID> logs = HashMultimap.create();
       ZooReaderWriter zk = new ZooReaderWriter(conn.info().getZooKeepers(),
           conn.info().getZooKeepersSessionTimeOut(), "");
-      WalStateManager wals = new WalStateManager(conn.getInstance(), zk);
+      WalStateManager wals = new WalStateManager(context, zk);
       for (Entry<TServerInstance,List<UUID>> entry : 
wals.getAllMarkers().entrySet()) {
         for (UUID id : entry.getValue()) {
           Pair<WalState,Path> state = wals.state(entry.getKey(), id);
@@ -170,9 +172,10 @@ public void configure(MiniAccumuloConfigImpl cfg, 
Configuration hadoopCoreSite)
     }
   }
 
-  private Multimap<String,Table.ID> getAllLogs(Connector conn) throws 
Exception {
-    Multimap<String,Table.ID> logs = getLogs(conn);
-    try (Scanner scanner = conn.createScanner(ReplicationTable.NAME, 
Authorizations.EMPTY)) {
+  private Multimap<String,Table.ID> getAllLogs(ClientContext context) throws 
Exception {
+    Multimap<String,Table.ID> logs = getLogs(context);
+    try (Scanner scanner = 
context.getConnector().createScanner(ReplicationTable.NAME,
+        Authorizations.EMPTY)) {
       StatusSection.limit(scanner);
       Text buff = new Text();
       for (Entry<Key,Value> entry : scanner) {
@@ -344,7 +347,7 @@ public void correctRecordsCompleteFile() throws Exception {
     ZooReaderWriter zk = new ZooReaderWriter(conn.info().getZooKeepers(),
         conn.info().getZooKeepersSessionTimeOut(), "");
     while (wals.isEmpty() && attempts > 0) {
-      WalStateManager markers = new WalStateManager(i, zk);
+      WalStateManager markers = new WalStateManager(getClientContext(), zk);
       for (Entry<Path,WalState> entry : markers.getAllState().entrySet()) {
         wals.add(entry.getKey().toString());
       }
@@ -529,6 +532,7 @@ private void writeSomeData(Connector conn, String table, 
int rows, int cols) thr
 
   @Test
   public void replicationEntriesPrecludeWalDeletion() throws Exception {
+    final ClientContext context = getClientContext();
     final Connector conn = getConnector();
     String table1 = "table1", table2 = "table2", table3 = "table3";
     final Multimap<String,Table.ID> logs = HashMultimap.create();
@@ -541,7 +545,7 @@ public void run() {
         // when that happens
         while (keepRunning.get()) {
           try {
-            logs.putAll(getAllLogs(conn));
+            logs.putAll(getAllLogs(context));
           } catch (Exception e) {
             log.error("Error getting logs", e);
           }
@@ -1100,6 +1104,7 @@ public void correctClusterNameInWorkEntry() throws 
Exception {
   public void replicationRecordsAreClosedAfterGarbageCollection() throws 
Exception {
     getCluster().getClusterControl().stop(ServerType.GARBAGE_COLLECTOR);
 
+    final ClientContext context = getClientContext();
     final Connector conn = getConnector();
 
     ReplicationTable.setOnline(conn);
@@ -1117,7 +1122,7 @@ public void run() {
         // when that happens
         while (keepRunning.get()) {
           try {
-            metadataWals.addAll(getLogs(conn).keySet());
+            metadataWals.addAll(getLogs(context).keySet());
           } catch (Exception e) {
             log.error("Metadata table doesn't exist");
           }
diff --git 
a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationOperationsImplIT.java
 
b/test/src/main/java/org/apache/accumulo/test/replication/ReplicationOperationsImplIT.java
index ed1fcdd860..e646268d44 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/replication/ReplicationOperationsImplIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/replication/ReplicationOperationsImplIT.java
@@ -89,7 +89,7 @@ private ReplicationOperationsImpl getReplicationOperations() 
throws Exception {
 
     final MasterClientServiceHandler mcsh = new 
MasterClientServiceHandler(master) {
       @Override
-      protected Table.ID getTableId(Instance inst, String tableName)
+      protected Table.ID getTableId(ClientContext context, String tableName)
           throws ThriftTableOperationException {
         try {
           return 
Table.ID.of(conn.tableOperations().tableIdMap().get(tableName));


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to