You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mw...@apache.org on 2018/08/10 14:31:20 UTC
[accumulo] branch master updated: ServerContext is now a singleton
class (#585)
This is an automated email from the ASF dual-hosted git repository.
mwalch pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/master by this push:
new 3d89bca ServerContext is now a singleton class (#585)
3d89bca is described below
commit 3d89bca40d0d2a70415cc52b03793764043f999b
Author: Mike Walch <mw...@apache.org>
AuthorDate: Fri Aug 10 10:31:18 2018 -0400
ServerContext is now a singleton class (#585)
* ServerContext is only created using getInstance methods
* Increase passing of ServerContext to reduce getInstance calls
---
.../java/org/apache/accumulo/server/Accumulo.java | 7 +-
.../org/apache/accumulo/server/ServerContext.java | 43 ++++++++-
.../accumulo/server/cli/ClientOnDefaultTable.java | 4 +-
.../accumulo/server/cli/ClientOnRequiredTable.java | 4 +-
.../org/apache/accumulo/server/cli/ClientOpts.java | 4 +-
.../accumulo/server/client/HdfsZooInstance.java | 2 +-
.../accumulo/server/conf/ConfigSanityCheck.java | 3 +-
.../server/constraints/MetadataConstraints.java | 3 +-
.../org/apache/accumulo/server/fs/VolumeUtil.java | 9 +-
.../apache/accumulo/server/init/Initialize.java | 18 ++--
.../server/iterators/MetadataBulkLoadFilter.java | 3 +-
.../server/master/balancer/TableLoadBalancer.java | 3 +-
.../server/master/state/TabletStateStore.java | 2 +-
.../accumulo/server/master/state/ZooStore.java | 6 +-
.../server/master/state/ZooTabletStateStore.java | 5 +-
.../accumulo/server/problems/ProblemReport.java | 12 +--
.../accumulo/server/problems/ProblemReports.java | 8 +-
.../accumulo/server/replication/ReplicaSystem.java | 3 +-
.../server/replication/ReplicaSystemFactory.java | 5 +-
.../accumulo/server/tables/TableManager.java | 15 +--
.../server/tablets/UniqueNameAllocator.java | 18 +---
.../org/apache/accumulo/server/util/Admin.java | 6 +-
.../accumulo/server/util/FindOfflineTablets.java | 17 ++--
.../accumulo/server/util/ListVolumesUsed.java | 13 ++-
.../accumulo/server/util/LoginProperties.java | 4 +-
.../accumulo/server/util/MasterMetadataUtil.java | 27 +++---
.../accumulo/server/util/MetadataTableUtil.java | 103 ++++++++++-----------
.../accumulo/server/util/NamespacePropUtil.java | 18 ++--
.../accumulo/server/util/RandomizeVolumes.java | 9 +-
.../accumulo/server/util/SystemPropUtil.java | 11 +--
.../apache/accumulo/server/util/TablePropUtil.java | 21 +++--
.../server/zookeeper/TransactionWatcher.java | 24 +++--
.../constraints/MetadataConstraintsTest.java | 4 +
.../apache/accumulo/gc/SimpleGarbageCollector.java | 5 +-
.../java/org/apache/accumulo/master/Master.java | 18 ++--
.../master/MasterClientServiceHandler.java | 12 +--
.../apache/accumulo/master/TabletGroupWatcher.java | 5 +-
.../master/tableOps/CancelCompactions.java | 8 +-
.../accumulo/master/tableOps/ChangeTableState.java | 15 ++-
.../apache/accumulo/master/tableOps/CleanUp.java | 7 +-
.../accumulo/master/tableOps/CloneTable.java | 9 +-
.../accumulo/master/tableOps/CloneZookeeper.java | 15 +--
.../accumulo/master/tableOps/CompactRange.java | 8 +-
.../accumulo/master/tableOps/CompactionDriver.java | 4 +-
.../accumulo/master/tableOps/CreateImportDir.java | 2 +-
.../accumulo/master/tableOps/CreateTable.java | 5 +-
.../accumulo/master/tableOps/DeleteNamespace.java | 4 +-
.../accumulo/master/tableOps/DeleteTable.java | 11 +--
.../accumulo/master/tableOps/ExportTable.java | 4 +-
.../master/tableOps/FinishCancelCompaction.java | 4 +-
.../accumulo/master/tableOps/FinishCloneTable.java | 11 +--
.../master/tableOps/FinishCreateNamespace.java | 2 +-
.../master/tableOps/FinishCreateTable.java | 7 +-
.../master/tableOps/FinishImportTable.java | 9 +-
.../master/tableOps/ImportPopulateZookeeper.java | 13 +--
.../accumulo/master/tableOps/ImportTable.java | 9 +-
.../master/tableOps/MapImportFileNames.java | 2 +-
.../accumulo/master/tableOps/NamespaceCleanUp.java | 5 +-
.../master/tableOps/PopulateZookeeper.java | 13 +--
.../tableOps/PopulateZookeeperWithNamespace.java | 10 +-
.../accumulo/master/tableOps/RenameNamespace.java | 6 +-
.../accumulo/master/tableOps/RenameTable.java | 12 +--
.../accumulo/master/tableOps/TableRangeOp.java | 8 +-
.../accumulo/master/tableOps/TableRangeOpWait.java | 4 +-
.../org/apache/accumulo/master/tableOps/Utils.java | 44 ++++-----
.../accumulo/master/tableOps/WriteExportFiles.java | 14 +--
.../master/tableOps/bulkVer1/BulkImport.java | 28 +++---
.../tableOps/bulkVer1/CleanUpBulkImport.java | 8 +-
.../tableOps/bulkVer1/CompleteBulkImport.java | 2 +-
.../master/tableOps/bulkVer2/BulkImportMove.java | 2 +-
.../tableOps/bulkVer2/CleanUpBulkImport.java | 6 +-
.../tableOps/bulkVer2/CompleteBulkImport.java | 2 +-
.../master/tableOps/bulkVer2/PrepBulkImport.java | 22 +++--
.../java/org/apache/accumulo/monitor/Monitor.java | 13 ++-
.../rest/replication/ReplicationResource.java | 2 +-
.../monitor/rest/tables/TablesResource.java | 2 +-
.../monitor/rest/trace/TracesResource.java | 3 +-
.../monitor/util/AccumuloMonitorAppender.java | 5 +-
.../org/apache/accumulo/tserver/TabletServer.java | 18 ++--
.../tserver/replication/AccumuloReplicaSystem.java | 8 +-
.../tserver/replication/ReplicationProcessor.java | 8 +-
.../tserver/replication/ReplicationWorker.java | 10 +-
.../tserver/tablet/BulkImportCacheCleaner.java | 4 +-
.../org/apache/accumulo/tserver/tablet/Tablet.java | 11 ++-
.../apache/accumulo/tserver/tablet/TabletData.java | 16 +++-
.../replication/ReplicationProcessorTest.java | 6 +-
.../accumulo/shell/commands/ListBulkCommand.java | 2 +-
.../accumulo/harness/AccumuloClusterHarness.java | 5 +
.../accumulo/test/MetaConstraintRetryIT.java | 6 +-
.../apache/accumulo/test/QueryMetadataTable.java | 21 ++---
.../accumulo/test/functional/SplitRecoveryIT.java | 7 +-
.../accumulo/test/functional/ZombieTServer.java | 2 +-
.../accumulo/test/performance/NullTserver.java | 4 +-
.../test/performance/scan/CollectTabletStats.java | 4 +-
.../test/replication/MockReplicaSystem.java | 3 +-
95 files changed, 505 insertions(+), 464 deletions(-)
diff --git a/server/base/src/main/java/org/apache/accumulo/server/Accumulo.java b/server/base/src/main/java/org/apache/accumulo/server/Accumulo.java
index e352809..4fe7f62 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/Accumulo.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/Accumulo.java
@@ -261,11 +261,10 @@ public class Accumulo {
*
* see ACCUMULO-2519
*/
- public static void abortIfFateTransactions() {
+ public static void abortIfFateTransactions(ServerContext context) {
try {
- final ReadOnlyTStore<Accumulo> fate = new ReadOnlyStore<>(
- new ZooStore<>(ServerContext.getInstance().getZooKeeperRoot() + Constants.ZFATE,
- ZooReaderWriter.getInstance()));
+ final ReadOnlyTStore<Accumulo> fate = new ReadOnlyStore<>(new ZooStore<>(
+ context.getZooKeeperRoot() + Constants.ZFATE, ZooReaderWriter.getInstance()));
if (!(fate.list().isEmpty())) {
throw new AccumuloException("Aborting upgrade because there are"
+ " outstanding FATE transactions from a previous Accumulo version."
diff --git a/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java b/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
index 0111794..a2428d9 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
@@ -41,6 +41,8 @@ import org.apache.accumulo.server.rpc.SaslServerConnectionParams;
import org.apache.accumulo.server.rpc.ThriftServerType;
import org.apache.accumulo.server.security.SecurityUtil;
import org.apache.accumulo.server.security.delegation.AuthenticationTokenSecretManager;
+import org.apache.accumulo.server.tables.TableManager;
+import org.apache.accumulo.server.tablets.UniqueNameAllocator;
import org.apache.hadoop.security.UserGroupInformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -56,13 +58,19 @@ public class ServerContext extends ClientContext {
private static ServerContext serverContextInstance = null;
private final ServerInfo info;
+ private TableManager tableManager;
+ private UniqueNameAllocator nameAllocator;
private ServerConfigurationFactory serverConfFactory = null;
private String applicationName = null;
private String applicationClassName = null;
private String hostname = null;
private AuthenticationTokenSecretManager secretManager;
- public ServerContext(ServerInfo info) {
+ private ServerContext() {
+ this(new ServerInfo());
+ }
+
+ private ServerContext(ServerInfo info) {
super(info, SiteConfiguration.getInstance());
this.info = info;
}
@@ -75,13 +83,24 @@ public class ServerContext extends ClientContext {
this(new ServerInfo(info));
}
- public ServerContext(ClientContext context) {
- this(new ServerInfo(context.getClientInfo()));
+ synchronized public static ServerContext getInstance() {
+ if (serverContextInstance == null) {
+ serverContextInstance = new ServerContext();
+ }
+ return serverContextInstance;
}
- synchronized public static ServerContext getInstance() {
+ synchronized public static ServerContext getInstance(ClientInfo info) {
+ if (serverContextInstance == null) {
+ serverContextInstance = new ServerContext(info);
+ }
+ return serverContextInstance;
+ }
+
+ synchronized public static ServerContext getInstance(String instanceName, String zooKeepers,
+ int zooKeepersSessionTimeOut) {
if (serverContextInstance == null) {
- serverContextInstance = new ServerContext(new ServerInfo());
+ serverContextInstance = new ServerContext(instanceName, zooKeepers, zooKeepersSessionTimeOut);
}
return serverContextInstance;
}
@@ -230,4 +249,18 @@ public class ServerContext extends ClientContext {
throws AccumuloSecurityException, AccumuloException {
return Connector.builder().usingClientInfo(info).usingToken(principal, token).build();
}
+
+ public synchronized TableManager getTableManager() {
+ if (tableManager == null) {
+ tableManager = new TableManager(this);
+ }
+ return tableManager;
+ }
+
+ public synchronized UniqueNameAllocator getUniqueNameAllocator() {
+ if (nameAllocator == null) {
+ nameAllocator = new UniqueNameAllocator(this);
+ }
+ return nameAllocator;
+ }
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnDefaultTable.java b/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnDefaultTable.java
index 74a5e03..8d3c245 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnDefaultTable.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnDefaultTable.java
@@ -16,7 +16,6 @@
*/
package org.apache.accumulo.server.cli;
-import org.apache.accumulo.core.client.ClientInfo;
import org.apache.accumulo.server.ServerContext;
public class ClientOnDefaultTable extends org.apache.accumulo.core.cli.ClientOnDefaultTable {
@@ -28,8 +27,7 @@ public class ClientOnDefaultTable extends org.apache.accumulo.core.cli.ClientOnD
if (instance == null) {
return ServerContext.getInstance();
}
- ClientInfo info = getClientInfo();
- return new ServerContext(instance, info.getZooKeepers(), info.getZooKeepersSessionTimeOut());
+ return ServerContext.getInstance(getClientInfo());
}
public ClientOnDefaultTable(String table) {
diff --git a/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnRequiredTable.java b/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnRequiredTable.java
index c681f01..d231310 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnRequiredTable.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/cli/ClientOnRequiredTable.java
@@ -16,7 +16,6 @@
*/
package org.apache.accumulo.server.cli;
-import org.apache.accumulo.core.client.ClientInfo;
import org.apache.accumulo.server.ServerContext;
public class ClientOnRequiredTable extends org.apache.accumulo.core.cli.ClientOnRequiredTable {
@@ -28,7 +27,6 @@ public class ClientOnRequiredTable extends org.apache.accumulo.core.cli.ClientOn
if (instance == null) {
return ServerContext.getInstance();
}
- ClientInfo info = getClientInfo();
- return new ServerContext(instance, info.getZooKeepers(), info.getZooKeepersSessionTimeOut());
+ return ServerContext.getInstance(getClientInfo());
}
}
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 a2c0346..b204226 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
@@ -16,7 +16,6 @@
*/
package org.apache.accumulo.server.cli;
-import org.apache.accumulo.core.client.ClientInfo;
import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.server.ServerContext;
@@ -33,7 +32,6 @@ public class ClientOpts extends org.apache.accumulo.core.cli.ClientOpts {
if (instance == null) {
return ServerContext.getInstance();
}
- ClientInfo info = getClientInfo();
- return new ServerContext(instance, info.getZooKeepers(), info.getZooKeepersSessionTimeOut());
+ return ServerContext.getInstance(getClientInfo());
}
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java b/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
index 49479ad..854f883 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
@@ -59,7 +59,7 @@ import com.google.common.base.Joiner;
* An implementation of Instance that looks in HDFS and ZooKeeper to find the master and root tablet
* location.
*
- * @deprecated since 2.0.0, Use {@link ServerContext#getInstance()} instead
+ * @deprecated since 2.0.0, Use {@link ServerContext} instead
*/
@Deprecated
public class HdfsZooInstance implements org.apache.accumulo.core.client.Instance {
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/ConfigSanityCheck.java b/server/base/src/main/java/org/apache/accumulo/server/conf/ConfigSanityCheck.java
index 1137ba9..a0069bd 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/ConfigSanityCheck.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/ConfigSanityCheck.java
@@ -25,7 +25,8 @@ import com.google.auto.service.AutoService;
public class ConfigSanityCheck implements KeywordExecutable {
public static void main(String[] args) {
- ServerContext.getInstance().getServerConfFactory().getSystemConfiguration();
+ ServerContext context = ServerContext.getInstance();
+ context.getServerConfFactory().getSystemConfiguration();
}
@Override
diff --git a/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java b/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
index 95b6767..253ca19 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
@@ -280,7 +280,6 @@ public class MetadataConstraints implements Constraint {
violations = addViolation(violations, 7);
}
}
-
}
}
@@ -297,7 +296,7 @@ public class MetadataConstraints implements Constraint {
}
protected Arbitrator getArbitrator() {
- return new ZooArbitrator();
+ return new ZooArbitrator(ServerContext.getInstance());
}
@Override
diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
index 249c681..631ceca 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java
@@ -163,11 +163,12 @@ public class VolumeUtil {
}
}
- public static String switchRootTableVolume(String location) throws IOException {
+ public static String switchRootTableVolume(ServerContext context, String location)
+ throws IOException {
String newLocation = switchVolume(location, FileType.TABLE,
ServerConstants.getVolumeReplacements());
if (newLocation != null) {
- MetadataTableUtil.setRootTabletDir(newLocation);
+ MetadataTableUtil.setRootTabletDir(context, newLocation);
log.info("Volume replaced: {} -> {}", location, newLocation);
return new Path(newLocation).toString();
}
@@ -304,7 +305,7 @@ public class VolumeUtil {
// only set the new location in zookeeper after a successful copy
log.info("setting root tablet location to {}", newDir);
- MetadataTableUtil.setRootTabletDir(newDir.toString());
+ MetadataTableUtil.setRootTabletDir(context, newDir.toString());
// rename the old dir to avoid confusion when someone looks at filesystem... its ok if we
// fail here and this does not happen because the location in
@@ -315,7 +316,7 @@ public class VolumeUtil {
} else {
log.info("setting root tablet location to {}", newDir);
- MetadataTableUtil.setRootTabletDir(newDir.toString());
+ MetadataTableUtil.setRootTabletDir(context, newDir.toString());
}
return newDir.toString();
diff --git a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
index 82007c6..059ac58 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java
@@ -442,7 +442,7 @@ public class Initialize implements KeywordExecutable {
String key = entry.getKey();
String value = entry.getValue();
if (Property.isValidZooPropertyKey(key)) {
- SystemPropUtil.setSystemProperty(key, value);
+ SystemPropUtil.setSystemProperty(context, key, value);
log.info("Uploaded - {} = {}", key, Property.isSensitive(key) ? "<hidden>" : value);
} else {
log.info("Skipped - {} = {}", key, Property.isSensitive(key) ? "<hidden>" : value);
@@ -485,7 +485,7 @@ public class Initialize implements KeywordExecutable {
initDirs(fs, uuid, VolumeConfiguration.getVolumeUris(SiteConfiguration.getInstance()), false);
// initialize initial system tables config in zookeeper
- initSystemTablesConfig();
+ initSystemTablesConfig(Constants.ZROOT + "/" + uuid);
VolumeChooserEnvironment chooserEnv = new VolumeChooserEnvironment(ChooserScope.INIT);
String tableMetadataTabletDir = fs.choose(chooserEnv, ServerConstants.getBaseUris())
@@ -778,7 +778,7 @@ public class Initialize implements KeywordExecutable {
rootUser, opts.rootpass);
}
- public static void initSystemTablesConfig() throws IOException {
+ public static void initSystemTablesConfig(String zooKeeperRoot) throws IOException {
try {
Configuration conf = CachedConfiguration.getInstance();
int max = conf.getInt("dfs.replication.max", 512);
@@ -790,20 +790,24 @@ public class Initialize implements KeywordExecutable {
if (min > 5)
setMetadataReplication(min, "min");
for (Entry<String,String> entry : initialMetadataConf.entrySet()) {
- if (!TablePropUtil.setTableProperty(RootTable.ID, entry.getKey(), entry.getValue()))
+ if (!TablePropUtil.setTableProperty(zooKeeperRoot, RootTable.ID, entry.getKey(),
+ entry.getValue()))
throw new IOException("Cannot create per-table property " + entry.getKey());
- if (!TablePropUtil.setTableProperty(MetadataTable.ID, entry.getKey(), entry.getValue()))
+ if (!TablePropUtil.setTableProperty(zooKeeperRoot, MetadataTable.ID, entry.getKey(),
+ entry.getValue()))
throw new IOException("Cannot create per-table property " + entry.getKey());
}
// Only add combiner config to accumulo.metadata table (ACCUMULO-3077)
for (Entry<String,String> entry : initialMetadataCombinerConf.entrySet()) {
- if (!TablePropUtil.setTableProperty(MetadataTable.ID, entry.getKey(), entry.getValue()))
+ if (!TablePropUtil.setTableProperty(zooKeeperRoot, MetadataTable.ID, entry.getKey(),
+ entry.getValue()))
throw new IOException("Cannot create per-table property " + entry.getKey());
}
// add configuration to the replication table
for (Entry<String,String> entry : initialReplicationTableConf.entrySet()) {
- if (!TablePropUtil.setTableProperty(ReplicationTable.ID, entry.getKey(), entry.getValue()))
+ if (!TablePropUtil.setTableProperty(zooKeeperRoot, ReplicationTable.ID, entry.getKey(),
+ entry.getValue()))
throw new IOException("Cannot create per-table property " + entry.getKey());
}
} catch (Exception e) {
diff --git a/server/base/src/main/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilter.java b/server/base/src/main/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilter.java
index 80ffacc..244e9f9 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilter.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/iterators/MetadataBulkLoadFilter.java
@@ -29,6 +29,7 @@ import org.apache.accumulo.core.iterators.IteratorUtil.IteratorScope;
import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
import org.apache.accumulo.fate.zookeeper.TransactionWatcher.Arbitrator;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.zookeeper.TransactionWatcher.ZooArbitrator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -87,6 +88,6 @@ public class MetadataBulkLoadFilter extends Filter {
}
protected Arbitrator getArbitrator() {
- return new ZooArbitrator();
+ return new ZooArbitrator(ServerContext.getInstance());
}
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
index 2306609..fc7e67d 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TableLoadBalancer.java
@@ -35,7 +35,6 @@ import org.apache.accumulo.core.master.state.tables.TableState;
import org.apache.accumulo.core.master.thrift.TabletServerStatus;
import org.apache.accumulo.server.master.state.TServerInstance;
import org.apache.accumulo.server.master.state.TabletMigration;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.accumulo.start.classloader.vfs.AccumuloVFSClassLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,7 +61,7 @@ public class TableLoadBalancer extends TabletBalancer {
}
protected String getLoadBalancerClassNameForTable(Table.ID table) {
- TableState tableState = TableManager.getInstance().getTableState(table);
+ TableState tableState = context.getTableManager().getTableState(table);
if (tableState == null)
return null;
if (tableState.equals(TableState.ONLINE))
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateStore.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateStore.java
index a32f03f..cd92959 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/TabletStateStore.java
@@ -103,7 +103,7 @@ public abstract class TabletStateStore implements Iterable<TabletLocationState>
protected static TabletStateStore getStoreForTablet(KeyExtent extent, ServerContext context)
throws DistributedStoreException {
if (extent.isRootTablet()) {
- return new ZooTabletStateStore();
+ return new ZooTabletStateStore(context);
} else if (extent.isMeta()) {
return new RootTabletStateStore(context);
} else {
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
index 908b097..dd671df 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
@@ -21,10 +21,10 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.IOException;
import java.util.List;
+import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.fate.zookeeper.IZooReaderWriter;
import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeExistsPolicy;
import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeMissingPolicy;
-import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
import org.slf4j.Logger;
@@ -44,8 +44,8 @@ public class ZooStore implements DistributedStore {
this.basePath = basePath;
}
- public ZooStore() throws IOException {
- this(ServerContext.getInstance().getZooKeeperRoot());
+ public ZooStore(ClientContext context) throws IOException {
+ this(context.getZooKeeperRoot());
}
@Override
diff --git a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
index b32216e..bb86cdc 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.core.metadata.RootTable;
import org.apache.accumulo.core.tabletserver.log.LogEntry;
import org.apache.accumulo.core.util.HostAndPort;
@@ -43,9 +44,9 @@ public class ZooTabletStateStore extends TabletStateStore {
this.store = store;
}
- public ZooTabletStateStore() throws DistributedStoreException {
+ public ZooTabletStateStore(ClientContext context) throws DistributedStoreException {
try {
- store = new ZooStore();
+ store = new ZooStore(context);
} catch (IOException ex) {
throw new DistributedStoreException(ex);
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReport.java b/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReport.java
index 0955023..19d8867 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReport.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReport.java
@@ -149,8 +149,8 @@ public class ProblemReport {
MetadataTableUtil.getMetadataTable(context).update(m);
}
- void removeFromZooKeeper() throws Exception {
- removeFromZooKeeper(ZooReaderWriter.getInstance(), ServerContext.getInstance());
+ void removeFromZooKeeper(ServerContext context) throws Exception {
+ removeFromZooKeeper(ZooReaderWriter.getInstance(), context);
}
void removeFromZooKeeper(ZooReaderWriter zoorw, ServerContext context)
@@ -159,8 +159,8 @@ public class ProblemReport {
zoorw.recursiveDelete(zpath, NodeMissingPolicy.SKIP);
}
- void saveToZooKeeper() throws Exception {
- saveToZooKeeper(ZooReaderWriter.getInstance(), ServerContext.getInstance());
+ void saveToZooKeeper(ServerContext context) throws Exception {
+ saveToZooKeeper(ZooReaderWriter.getInstance(), context);
}
void saveToZooKeeper(ZooReaderWriter zoorw, ServerContext context)
@@ -182,8 +182,8 @@ public class ProblemReport {
+ Encoding.encodeAsBase64FileName(new Text(baos.toByteArray()));
}
- static ProblemReport decodeZooKeeperEntry(String node) throws Exception {
- return decodeZooKeeperEntry(node, ZooReaderWriter.getInstance(), ServerContext.getInstance());
+ static ProblemReport decodeZooKeeperEntry(ServerContext context, String node) throws Exception {
+ return decodeZooKeeperEntry(node, ZooReaderWriter.getInstance(), context);
}
static ProblemReport decodeZooKeeperEntry(String node, ZooReaderWriter zoorw,
diff --git a/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java b/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java
index 6055075..ad95fda 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java
@@ -97,7 +97,7 @@ public class ProblemReports implements Iterable<ProblemReport> {
try {
if (isMeta(pr.getTableId())) {
// file report in zookeeper
- pr.saveToZooKeeper();
+ pr.saveToZooKeeper(context);
} else {
// file report in metadata table
pr.saveToMetadataTable(context);
@@ -136,7 +136,7 @@ public class ProblemReports implements Iterable<ProblemReport> {
try {
if (isMeta(pr.getTableId())) {
// file report in zookeeper
- pr.removeFromZooKeeper();
+ pr.removeFromZooKeeper(context);
} else {
// file report in metadata table
pr.removeFromMetadataTable(context);
@@ -163,7 +163,7 @@ public class ProblemReports implements Iterable<ProblemReport> {
if (isMeta(table)) {
Iterator<ProblemReport> pri = iterator(table);
while (pri.hasNext()) {
- pri.next().removeFromZooKeeper();
+ pri.next().removeFromZooKeeper(context);
}
return;
}
@@ -261,7 +261,7 @@ public class ProblemReports implements Iterable<ProblemReport> {
try {
if (getIter1().hasNext()) {
iter1Count++;
- return ProblemReport.decodeZooKeeperEntry(getIter1().next());
+ return ProblemReport.decodeZooKeeperEntry(context, getIter1().next());
}
if (getIter2().hasNext()) {
diff --git a/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystem.java b/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystem.java
index 66a4ca2..99b876c 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystem.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystem.java
@@ -17,6 +17,7 @@
package org.apache.accumulo.server.replication;
import org.apache.accumulo.core.replication.ReplicationTarget;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.replication.proto.Replication.Status;
import org.apache.hadoop.fs.Path;
@@ -46,5 +47,5 @@ public interface ReplicaSystem {
* For example, we only need one implementation for Accumulo, but, for each peer, we have a ZK
* quorum and instance name
*/
- void configure(String configuration);
+ void configure(ServerContext context, String configuration);
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystemFactory.java b/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystemFactory.java
index 9335669..accaf4e 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystemFactory.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/replication/ReplicaSystemFactory.java
@@ -20,6 +20,7 @@ import static java.util.Objects.requireNonNull;
import java.util.Map.Entry;
+import org.apache.accumulo.server.ServerContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,7 +34,7 @@ public class ReplicaSystemFactory {
* {@link ReplicaSystem} implementation class name
* @return A {@link ReplicaSystem} object from the given name
*/
- public ReplicaSystem get(String value) {
+ public ReplicaSystem get(ServerContext context, String value) {
final Entry<String,String> entry = parseReplicaSystemConfiguration(value);
try {
@@ -42,7 +43,7 @@ public class ReplicaSystemFactory {
if (ReplicaSystem.class.isAssignableFrom(clz)) {
Object o = clz.newInstance();
ReplicaSystem rs = (ReplicaSystem) o;
- rs.configure(entry.getValue());
+ rs.configure(context, entry.getValue());
return rs;
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
index 20d1358..adfc96c 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
@@ -57,8 +57,7 @@ public class TableManager {
.synchronizedMap(new HashMap<>());
private static final byte[] ZERO_BYTE = {'0'};
- private static TableManager tableManager = null;
-
+ private final ServerContext context;
private final String zkRoot;
private final String instanceID;
private ZooCache zooStateCache;
@@ -99,14 +98,8 @@ public class TableManager {
existsPolicy);
}
- public synchronized static TableManager getInstance() {
- if (tableManager == null)
- tableManager = new TableManager();
- return tableManager;
- }
-
- private TableManager() {
- ServerContext context = ServerContext.getInstance();
+ public TableManager(ServerContext context) {
+ this.context = context;
zkRoot = context.getZooKeeperRoot();
instanceID = context.getInstanceID();
zooStateCache = new ZooCache(new TableStateWatcher());
@@ -245,7 +238,7 @@ public class TableManager {
NodeExistsPolicy.OVERWRITE);
for (Entry<String,String> entry : propertiesToSet.entrySet())
- TablePropUtil.setTableProperty(tableId, entry.getKey(), entry.getValue());
+ TablePropUtil.setTableProperty(context, tableId, entry.getKey(), entry.getValue());
for (String prop : propertiesToExclude)
ZooReaderWriter.getInstance().recursiveDelete(Constants.ZROOT + "/" + instanceID
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java b/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
index 72b4292..05380a4 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tablets/UniqueNameAllocator.java
@@ -33,14 +33,16 @@ import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
* This is useful for filenames because it makes caching easy.
*/
public class UniqueNameAllocator {
+
+ private ServerContext context;
private long next = 0;
private long maxAllocated = 0;
private String nextNamePath;
private Random rand;
- private UniqueNameAllocator() {
- nextNamePath = Constants.ZROOT + "/" + ServerContext.getInstance().getInstanceID()
- + Constants.ZNEXT_FILE;
+ public UniqueNameAllocator(ServerContext context) {
+ this.context = context;
+ nextNamePath = Constants.ZROOT + "/" + context.getInstanceID() + Constants.ZNEXT_FILE;
rand = new Random();
}
@@ -71,14 +73,4 @@ public class UniqueNameAllocator {
return new String(FastFormat.toZeroPaddedString(next++, 7, Character.MAX_RADIX, new byte[0]),
UTF_8);
}
-
- private static UniqueNameAllocator instance = null;
-
- public static synchronized UniqueNameAllocator getInstance() {
- if (instance == null)
- instance = new UniqueNameAllocator();
-
- return instance;
- }
-
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java b/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
index 2bc853f..48bc90a 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/Admin.java
@@ -56,6 +56,7 @@ import org.apache.accumulo.core.util.AddressUtil;
import org.apache.accumulo.core.util.HostAndPort;
import org.apache.accumulo.fate.zookeeper.ZooCache;
import org.apache.accumulo.fate.zookeeper.ZooLock;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.cli.ClientOpts;
import org.apache.accumulo.server.security.SecurityUtil;
import org.apache.accumulo.start.spi.KeywordExecutable;
@@ -213,7 +214,7 @@ public class Admin implements KeywordExecutable {
}
try {
- ClientContext context = opts.getServerContext();
+ ServerContext context = opts.getServerContext();
int rc = 0;
@@ -245,7 +246,8 @@ public class Admin implements KeywordExecutable {
} else if (cl.getParsedCommand().equals("volumes")) {
ListVolumesUsed.listVolumes(context);
} else if (cl.getParsedCommand().equals("randomizeVolumes")) {
- rc = RandomizeVolumes.randomize(context.getConnector(), randomizeVolumesOpts.tableName);
+ rc = RandomizeVolumes.randomize(context, context.getConnector(),
+ randomizeVolumesOpts.tableName);
} else {
everything = cl.getParsedCommand().equals("stopAll");
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java b/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
index 3bdc2ce..4cade6c 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/FindOfflineTablets.java
@@ -22,7 +22,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.accumulo.core.client.AccumuloException;
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.Range;
@@ -41,7 +40,6 @@ import org.apache.accumulo.server.master.state.TServerInstance;
import org.apache.accumulo.server.master.state.TabletLocationState;
import org.apache.accumulo.server.master.state.TabletState;
import org.apache.accumulo.server.master.state.ZooTabletStateStore;
-import org.apache.accumulo.server.tables.TableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +53,7 @@ public class FindOfflineTablets {
findOffline(context, null);
}
- static int findOffline(ClientContext context, String tableName)
+ static int findOffline(ServerContext context, String tableName)
throws AccumuloException, TableNotFoundException {
final AtomicBoolean scanning = new AtomicBoolean(false);
@@ -75,7 +73,7 @@ public class FindOfflineTablets {
Iterator<TabletLocationState> zooScanner;
try {
- zooScanner = new ZooTabletStateStore().iterator();
+ zooScanner = new ZooTabletStateStore(context).iterator();
} catch (DistributedStoreException e) {
throw new AccumuloException(e);
}
@@ -83,7 +81,7 @@ public class FindOfflineTablets {
int offline = 0;
System.out.println("Scanning zookeeper");
- if ((offline = checkTablets(zooScanner, tservers)) > 0)
+ if ((offline = checkTablets(context, zooScanner, tservers)) > 0)
return offline;
if (RootTable.NAME.equals(tableName))
@@ -92,7 +90,7 @@ public class FindOfflineTablets {
System.out.println("Scanning " + RootTable.NAME);
Iterator<TabletLocationState> rootScanner = new MetaDataTableScanner(context,
MetadataSchema.TabletsSection.getRange(), RootTable.NAME);
- if ((offline = checkTablets(rootScanner, tservers)) > 0)
+ if ((offline = checkTablets(context, rootScanner, tservers)) > 0)
return offline;
if (MetadataTable.NAME.equals(tableName))
@@ -108,17 +106,18 @@ public class FindOfflineTablets {
try (MetaDataTableScanner metaScanner = new MetaDataTableScanner(context, range,
MetadataTable.NAME)) {
- return checkTablets(metaScanner, tservers);
+ return checkTablets(context, metaScanner, tservers);
}
}
- private static int checkTablets(Iterator<TabletLocationState> scanner, LiveTServerSet tservers) {
+ private static int checkTablets(ServerContext context, Iterator<TabletLocationState> scanner,
+ LiveTServerSet tservers) {
int offline = 0;
while (scanner.hasNext() && !System.out.checkError()) {
TabletLocationState locationState = scanner.next();
TabletState state = locationState.getState(tservers.getCurrentServers());
- if (state != null && state != TabletState.HOSTED && TableManager.getInstance()
+ if (state != null && state != TabletState.HOSTED && context.getTableManager()
.getTableState(locationState.extent.getTableId()) != TableState.OFFLINE) {
System.out
.println(locationState + " is " + state + " #walogs:" + locationState.walogs.size());
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 3dafd0c..8af8f35 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
@@ -21,7 +21,6 @@ import java.util.Map.Entry;
import java.util.TreeSet;
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.Value;
import org.apache.accumulo.core.metadata.MetadataTable;
@@ -59,13 +58,13 @@ public class ListVolumesUsed {
volumes.add(getLogURI(logEntry.filename));
}
- private static void listZookeeper() throws Exception {
+ private static void listZookeeper(ServerContext context) throws Exception {
System.out.println("Listing volumes referenced in zookeeper");
TreeSet<String> volumes = new TreeSet<>();
- volumes.add(getTableURI(MetadataTableUtil.getRootTabletDir()));
+ volumes.add(getTableURI(MetadataTableUtil.getRootTabletDir(context)));
ArrayList<LogEntry> result = new ArrayList<>();
- MetadataTableUtil.getRootLogEntries(result);
+ MetadataTableUtil.getRootLogEntries(context, result);
for (LogEntry logEntry : result) {
getLogURIs(volumes, logEntry);
}
@@ -75,7 +74,7 @@ public class ListVolumesUsed {
}
- private static void listTable(String name, ClientContext context) throws Exception {
+ private static void listTable(String name, ServerContext context) throws Exception {
System.out.println("Listing volumes referenced in " + name + " tablets section");
@@ -135,8 +134,8 @@ public class ListVolumesUsed {
System.out.println("\tVolume : " + volume);
}
- public static void listVolumes(ClientContext context) throws Exception {
- listZookeeper();
+ public static void listVolumes(ServerContext context) throws Exception {
+ listZookeeper(context);
System.out.println();
listTable(RootTable.NAME, context);
System.out.println();
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java b/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
index 01be214..bc1ca89 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/LoginProperties.java
@@ -46,8 +46,8 @@ public class LoginProperties implements KeywordExecutable {
@Override
public void execute(String[] args) throws Exception {
- AccumuloConfiguration config = ServerContext.getInstance().getServerConfFactory()
- .getSystemConfiguration();
+ ServerContext context = ServerContext.getInstance();
+ AccumuloConfiguration config = context.getServerConfFactory().getSystemConfiguration();
Authenticator authenticator = AccumuloVFSClassLoader.getClassLoader()
.loadClass(config.get(Property.INSTANCE_SECURITY_AUTHENTICATOR))
.asSubclass(Authenticator.class).newInstance();
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
index e2223f1..2d4472b 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/MasterMetadataUtil.java
@@ -33,7 +33,6 @@ import java.util.concurrent.TimeUnit;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.core.client.impl.ScannerImpl;
import org.apache.accumulo.core.client.impl.Table;
import org.apache.accumulo.core.data.Key;
@@ -52,6 +51,7 @@ import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.core.util.ColumnFQ;
import org.apache.accumulo.fate.zookeeper.IZooReaderWriter;
import org.apache.accumulo.fate.zookeeper.ZooUtil.NodeMissingPolicy;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.FileRef;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.fs.VolumeManagerImpl;
@@ -67,7 +67,7 @@ public class MasterMetadataUtil {
private static final Logger log = LoggerFactory.getLogger(MasterMetadataUtil.class);
- public static void addNewTablet(ClientContext context, KeyExtent extent, String path,
+ public static void addNewTablet(ServerContext context, KeyExtent extent, String path,
TServerInstance location, Map<FileRef,DataFileValue> datafileSizes,
Map<Long,? extends Collection<FileRef>> bulkLoadedFiles, String time, long lastFlushID,
long lastCompactID, ZooLock zooLock) {
@@ -101,7 +101,7 @@ public class MasterMetadataUtil {
MetadataTableUtil.update(context, zooLock, m, extent);
}
- public static KeyExtent fixSplit(ClientContext context, Text metadataEntry,
+ public static KeyExtent fixSplit(ServerContext context, Text metadataEntry,
SortedMap<ColumnFQ,Value> columns, TServerInstance tserver, ZooLock lock)
throws AccumuloException, IOException {
log.info("Incomplete split {} attempting to fix", metadataEntry);
@@ -148,7 +148,7 @@ public class MasterMetadataUtil {
time.toString(), initFlushID, initCompactID, lock);
}
- private static KeyExtent fixSplit(ClientContext context, Table.ID tableId, Text metadataEntry,
+ private static KeyExtent fixSplit(ServerContext context, Table.ID tableId, Text metadataEntry,
Text metadataPrevEndRow, Value oper, double splitRatio, TServerInstance tserver, String time,
long initFlushID, long initCompactID, ZooLock lock) throws AccumuloException, IOException {
if (metadataPrevEndRow == null)
@@ -214,7 +214,7 @@ public class MasterMetadataUtil {
}
}
- public static void replaceDatafiles(ClientContext context, KeyExtent extent,
+ public static void replaceDatafiles(ServerContext context, KeyExtent extent,
Set<FileRef> datafilesToDelete, Set<FileRef> scanFiles, FileRef path, Long compactionId,
DataFileValue size, String address, TServerInstance lastLocation, ZooLock zooLock)
throws IOException {
@@ -222,7 +222,7 @@ public class MasterMetadataUtil {
address, lastLocation, zooLock, true);
}
- public static void replaceDatafiles(ClientContext context, KeyExtent extent,
+ public static void replaceDatafiles(ServerContext context, KeyExtent extent,
Set<FileRef> datafilesToDelete, Set<FileRef> scanFiles, FileRef path, Long compactionId,
DataFileValue size, String address, TServerInstance lastLocation, ZooLock zooLock,
boolean insertDeleteFlags) throws IOException {
@@ -265,14 +265,14 @@ public class MasterMetadataUtil {
* should be relative to the table directory
*
*/
- public static void updateTabletDataFile(ClientContext context, KeyExtent extent, FileRef path,
+ public static void updateTabletDataFile(ServerContext context, KeyExtent extent, FileRef path,
FileRef mergeFile, DataFileValue dfv, String time, Set<FileRef> filesInUseByScans,
String address, ZooLock zooLock, Set<String> unusedWalLogs, TServerInstance lastLocation,
long flushId) {
if (extent.isRootTablet()) {
if (unusedWalLogs != null) {
- updateRootTabletDataFile(extent, path, mergeFile, dfv, time, filesInUseByScans, address,
- zooLock, unusedWalLogs, lastLocation, flushId);
+ updateRootTabletDataFile(context, extent, path, mergeFile, dfv, time, filesInUseByScans,
+ address, zooLock, unusedWalLogs, lastLocation, flushId);
}
return;
}
@@ -284,11 +284,12 @@ public class MasterMetadataUtil {
/**
* Update the data file for the root tablet
*/
- private static void updateRootTabletDataFile(KeyExtent extent, FileRef path, FileRef mergeFile,
- DataFileValue dfv, String time, Set<FileRef> filesInUseByScans, String address,
- ZooLock zooLock, Set<String> unusedWalLogs, TServerInstance lastLocation, long flushId) {
+ private static void updateRootTabletDataFile(ServerContext context, KeyExtent extent,
+ FileRef path, FileRef mergeFile, DataFileValue dfv, String time,
+ Set<FileRef> filesInUseByScans, String address, ZooLock zooLock, Set<String> unusedWalLogs,
+ TServerInstance lastLocation, long flushId) {
IZooReaderWriter zk = ZooReaderWriter.getInstance();
- String root = MetadataTableUtil.getZookeeperLogLocation();
+ String root = MetadataTableUtil.getZookeeperLogLocation(context);
for (String entry : unusedWalLogs) {
String[] parts = entry.split("/");
String zpath = root + "/" + parts[parts.length - 1];
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
index e47a9e1..4f0361b 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
@@ -48,7 +48,6 @@ import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.impl.BatchWriterImpl;
-import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.core.client.impl.Credentials;
import org.apache.accumulo.core.client.impl.ScannerImpl;
import org.apache.accumulo.core.client.impl.Table;
@@ -114,7 +113,7 @@ public class MetadataTableUtil {
private MetadataTableUtil() {}
- public synchronized static Writer getMetadataTable(ClientContext context) {
+ public synchronized static Writer getMetadataTable(ServerContext context) {
Credentials credentials = context.getCredentials();
Writer metadataTable = metadata_tables.get(credentials);
if (metadataTable == null) {
@@ -124,7 +123,7 @@ public class MetadataTableUtil {
return metadataTable;
}
- public synchronized static Writer getRootTable(ClientContext context) {
+ public synchronized static Writer getRootTable(ServerContext context) {
Credentials credentials = context.getCredentials();
Writer rootTable = root_tables.get(credentials);
if (rootTable == null) {
@@ -134,23 +133,23 @@ public class MetadataTableUtil {
return rootTable;
}
- public static void putLockID(ZooLock zooLock, Mutation m) {
- TabletsSection.ServerColumnFamily.LOCK_COLUMN.put(m, new Value(zooLock.getLockID()
- .serialize(ServerContext.getInstance().getZooKeeperRoot() + "/").getBytes(UTF_8)));
+ public static void putLockID(ServerContext context, ZooLock zooLock, Mutation m) {
+ TabletsSection.ServerColumnFamily.LOCK_COLUMN.put(m,
+ new Value(zooLock.getLockID().serialize(context.getZooKeeperRoot() + "/").getBytes(UTF_8)));
}
- private static void update(ClientContext context, Mutation m, KeyExtent extent) {
+ private static void update(ServerContext context, Mutation m, KeyExtent extent) {
update(context, null, m, extent);
}
- public static void update(ClientContext context, ZooLock zooLock, Mutation m, KeyExtent extent) {
+ public static void update(ServerContext context, ZooLock zooLock, Mutation m, KeyExtent extent) {
Writer t = extent.isMeta() ? getRootTable(context) : getMetadataTable(context);
- update(t, zooLock, m);
+ update(context, t, zooLock, m);
}
- public static void update(Writer t, ZooLock zooLock, Mutation m) {
+ public static void update(ServerContext context, Writer t, ZooLock zooLock, Mutation m) {
if (zooLock != null)
- putLockID(zooLock, m);
+ putLockID(context, zooLock, m);
while (true) {
try {
t.update(m);
@@ -166,7 +165,7 @@ public class MetadataTableUtil {
}
}
- public static void updateTabletFlushID(KeyExtent extent, long flushID, ClientContext context,
+ public static void updateTabletFlushID(KeyExtent extent, long flushID, ServerContext context,
ZooLock zooLock) {
if (!extent.isRootTablet()) {
Mutation m = new Mutation(extent.getMetadataEntry());
@@ -176,7 +175,7 @@ public class MetadataTableUtil {
}
}
- public static void updateTabletCompactID(KeyExtent extent, long compactID, ClientContext context,
+ public static void updateTabletCompactID(KeyExtent extent, long compactID, ServerContext context,
ZooLock zooLock) {
if (!extent.isRootTablet()) {
Mutation m = new Mutation(extent.getMetadataEntry());
@@ -187,7 +186,7 @@ public class MetadataTableUtil {
}
public static void updateTabletDataFile(long tid, KeyExtent extent,
- Map<FileRef,DataFileValue> estSizes, String time, ClientContext context, ZooLock zooLock) {
+ Map<FileRef,DataFileValue> estSizes, String time, ServerContext context, ZooLock zooLock) {
Mutation m = new Mutation(extent.getMetadataEntry());
byte[] tidBytes = Long.toString(tid).getBytes(UTF_8);
@@ -200,14 +199,14 @@ public class MetadataTableUtil {
update(context, zooLock, m, extent);
}
- public static void updateTabletDir(KeyExtent extent, String newDir, ClientContext context,
+ public static void updateTabletDir(KeyExtent extent, String newDir, ServerContext context,
ZooLock lock) {
Mutation m = new Mutation(extent.getMetadataEntry());
TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.put(m, new Value(newDir.getBytes(UTF_8)));
update(context, lock, m, extent);
}
- public static void addTablet(KeyExtent extent, String path, ClientContext context, char timeType,
+ public static void addTablet(KeyExtent extent, String path, ServerContext context, char timeType,
ZooLock lock) {
Mutation m = extent.getPrevRowUpdateMutation();
@@ -262,7 +261,7 @@ public class MetadataTableUtil {
void run(IZooReaderWriter rw) throws KeeperException, InterruptedException, IOException;
}
- private static void retryZooKeeperUpdate(ClientContext context, ZooLock zooLock,
+ private static void retryZooKeeperUpdate(ServerContext context, ZooLock zooLock,
ZooOperation op) {
while (true) {
try {
@@ -284,7 +283,7 @@ public class MetadataTableUtil {
@Override
public void run(IZooReaderWriter rw)
throws KeeperException, InterruptedException, IOException {
- String root = getZookeeperLogLocation();
+ String root = getZookeeperLogLocation(context);
rw.putPersistentData(root + "/" + entry.getUniqueID(), entry.toBytes(),
NodeExistsPolicy.OVERWRITE);
}
@@ -292,7 +291,7 @@ public class MetadataTableUtil {
}
public static SortedMap<FileRef,DataFileValue> getDataFileSizes(KeyExtent extent,
- ClientContext context) throws IOException {
+ ServerContext context) throws IOException {
TreeMap<FileRef,DataFileValue> sizes = new TreeMap<>();
try (Scanner mdScanner = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY)) {
@@ -316,7 +315,7 @@ public class MetadataTableUtil {
}
}
- public static void rollBackSplit(Text metadataEntry, Text oldPrevEndRow, ClientContext context,
+ public static void rollBackSplit(Text metadataEntry, Text oldPrevEndRow, ServerContext context,
ZooLock zooLock) {
KeyExtent ke = new KeyExtent(metadataEntry, oldPrevEndRow);
Mutation m = ke.getPrevRowUpdateMutation();
@@ -326,7 +325,7 @@ public class MetadataTableUtil {
}
public static void splitTablet(KeyExtent extent, Text oldPrevEndRow, double splitRatio,
- ClientContext context, ZooLock zooLock) {
+ ServerContext context, ZooLock zooLock) {
Mutation m = extent.getPrevRowUpdateMutation(); //
TabletsSection.TabletColumnFamily.SPLIT_RATIO_COLUMN.put(m,
@@ -339,7 +338,7 @@ public class MetadataTableUtil {
}
public static void finishSplit(Text metadataEntry, Map<FileRef,DataFileValue> datafileSizes,
- List<FileRef> highDatafilesToRemove, final ClientContext context, ZooLock zooLock) {
+ List<FileRef> highDatafilesToRemove, final ServerContext context, ZooLock zooLock) {
Mutation m = new Mutation(metadataEntry);
TabletsSection.TabletColumnFamily.SPLIT_RATIO_COLUMN.putDelete(m);
TabletsSection.TabletColumnFamily.OLD_PREV_ROW_COLUMN.putDelete(m);
@@ -357,12 +356,12 @@ public class MetadataTableUtil {
}
public static void finishSplit(KeyExtent extent, Map<FileRef,DataFileValue> datafileSizes,
- List<FileRef> highDatafilesToRemove, ClientContext context, ZooLock zooLock) {
+ List<FileRef> highDatafilesToRemove, ServerContext context, ZooLock zooLock) {
finishSplit(extent.getMetadataEntry(), datafileSizes, highDatafilesToRemove, context, zooLock);
}
public static void addDeleteEntries(KeyExtent extent, Set<FileRef> datafilesToDelete,
- ClientContext context) throws IOException {
+ ServerContext context) throws IOException {
Table.ID tableId = extent.getTableId();
@@ -387,7 +386,7 @@ public class MetadataTableUtil {
}
public static void removeScanFiles(KeyExtent extent, Set<FileRef> scanFiles,
- ClientContext context, ZooLock zooLock) {
+ ServerContext context, ZooLock zooLock) {
Mutation m = new Mutation(extent.getMetadataEntry());
for (FileRef pathToRemove : scanFiles)
@@ -445,7 +444,7 @@ public class MetadataTableUtil {
}
}
- public static void deleteTable(Table.ID tableId, boolean insertDeletes, ClientContext context,
+ public static void deleteTable(Table.ID tableId, boolean insertDeletes, ServerContext context,
ZooLock lock) throws AccumuloException, IOException {
try (Scanner ms = new ScannerImpl(context, MetadataTable.ID, Authorizations.EMPTY);
BatchWriter bw = new BatchWriterImpl(context, MetadataTable.ID,
@@ -486,14 +485,14 @@ public class MetadataTableUtil {
if (m == null) {
m = new Mutation(key.getRow());
if (lock != null)
- putLockID(lock, m);
+ putLockID(context, lock, m);
}
if (key.getRow().compareTo(m.getRow(), 0, m.getRow().length) != 0) {
bw.addMutation(m);
m = new Mutation(key.getRow());
if (lock != null)
- putLockID(lock, m);
+ putLockID(context, lock, m);
}
m.putDelete(key.getColumnFamily(), key.getColumnQualifier());
}
@@ -503,13 +502,13 @@ public class MetadataTableUtil {
}
}
- static String getZookeeperLogLocation() {
- return ServerContext.getInstance().getZooKeeperRoot() + RootTable.ZROOT_TABLET_WALOGS;
+ static String getZookeeperLogLocation(ServerContext context) {
+ return context.getZooKeeperRoot() + RootTable.ZROOT_TABLET_WALOGS;
}
- public static void setRootTabletDir(String dir) throws IOException {
+ public static void setRootTabletDir(ServerContext context, String dir) throws IOException {
IZooReaderWriter zoo = ZooReaderWriter.getInstance();
- String zpath = ServerContext.getInstance().getZooKeeperRoot() + RootTable.ZROOT_TABLET_PATH;
+ String zpath = context.getZooKeeperRoot() + RootTable.ZROOT_TABLET_PATH;
try {
zoo.putPersistentData(zpath, dir.getBytes(UTF_8), -1, NodeExistsPolicy.OVERWRITE);
} catch (KeeperException e) {
@@ -520,9 +519,9 @@ public class MetadataTableUtil {
}
}
- public static String getRootTabletDir() throws IOException {
+ public static String getRootTabletDir(ServerContext context) throws IOException {
IZooReaderWriter zoo = ZooReaderWriter.getInstance();
- String zpath = ServerContext.getInstance().getZooKeeperRoot() + RootTable.ZROOT_TABLET_PATH;
+ String zpath = context.getZooKeeperRoot() + RootTable.ZROOT_TABLET_PATH;
try {
return new String(zoo.getData(zpath, null), UTF_8);
} catch (KeeperException e) {
@@ -534,15 +533,15 @@ public class MetadataTableUtil {
}
public static Pair<List<LogEntry>,SortedMap<FileRef,DataFileValue>> getFileAndLogEntries(
- ClientContext context, KeyExtent extent)
+ ServerContext context, KeyExtent extent)
throws KeeperException, InterruptedException, IOException {
ArrayList<LogEntry> result = new ArrayList<>();
TreeMap<FileRef,DataFileValue> sizes = new TreeMap<>();
VolumeManager fs = VolumeManagerImpl.get();
if (extent.isRootTablet()) {
- getRootLogEntries(result);
- Path rootDir = new Path(getRootTabletDir());
+ getRootLogEntries(context, result);
+ Path rootDir = new Path(getRootTabletDir(context));
FileStatus[] files = fs.listStatus(rootDir);
for (FileStatus fileStatus : files) {
if (fileStatus.getPath().toString().endsWith("_tmp")) {
@@ -580,13 +579,13 @@ public class MetadataTableUtil {
return new Pair<>(result, sizes);
}
- public static List<LogEntry> getLogEntries(ClientContext context, KeyExtent extent)
+ public static List<LogEntry> getLogEntries(ServerContext context, KeyExtent extent)
throws IOException, KeeperException, InterruptedException {
log.info("Scanning logging entries for {}", extent);
ArrayList<LogEntry> result = new ArrayList<>();
if (extent.equals(RootTable.EXTENT)) {
log.info("Getting logs for root tablet from zookeeper");
- getRootLogEntries(result);
+ getRootLogEntries(context, result);
} else {
log.info("Scanning metadata for logs used for tablet {}", extent);
Scanner scanner = getTabletLogScanner(context, extent);
@@ -605,10 +604,10 @@ public class MetadataTableUtil {
return result;
}
- static void getRootLogEntries(final ArrayList<LogEntry> result)
+ static void getRootLogEntries(ServerContext context, final ArrayList<LogEntry> result)
throws KeeperException, InterruptedException, IOException {
IZooReaderWriter zoo = ZooReaderWriter.getInstance();
- String root = getZookeeperLogLocation();
+ String root = getZookeeperLogLocation(context);
// there's a little race between getting the children and fetching
// the data. The log can be removed in between.
while (true) {
@@ -627,7 +626,7 @@ public class MetadataTableUtil {
}
}
- private static Scanner getTabletLogScanner(ClientContext context, KeyExtent extent) {
+ private static Scanner getTabletLogScanner(ServerContext context, KeyExtent extent) {
Table.ID tableId = MetadataTable.ID;
if (extent.isMeta())
tableId = RootTable.ID;
@@ -646,7 +645,7 @@ public class MetadataTableUtil {
Iterator<LogEntry> rootTableEntries = null;
Iterator<Entry<Key,Value>> metadataEntries = null;
- LogEntryIterator(ClientContext context)
+ LogEntryIterator(ServerContext context)
throws IOException, KeeperException, InterruptedException {
zookeeperEntries = getLogEntries(context, RootTable.EXTENT).iterator();
rootTableEntries = getLogEntries(context, new KeyExtent(MetadataTable.ID, null, null))
@@ -686,7 +685,7 @@ public class MetadataTableUtil {
}
}
- public static Iterator<LogEntry> getLogEntries(ClientContext context)
+ public static Iterator<LogEntry> getLogEntries(ServerContext context)
throws IOException, KeeperException, InterruptedException {
return new LogEntryIterator(context);
}
@@ -698,7 +697,7 @@ public class MetadataTableUtil {
@Override
public void run(IZooReaderWriter rw)
throws KeeperException, InterruptedException, IOException {
- String root = getZookeeperLogLocation();
+ String root = getZookeeperLogLocation(context);
for (LogEntry entry : entries) {
String path = root + "/" + entry.getUniqueID();
log.debug("Removing " + path + " from zookeeper");
@@ -879,7 +878,7 @@ public class MetadataTableUtil {
return rewrites;
}
- public static void cloneTable(ClientContext context, Table.ID srcTableId, Table.ID tableId,
+ public static void cloneTable(ServerContext context, Table.ID srcTableId, Table.ID tableId,
VolumeManager volumeManager) throws Exception {
Connector conn = context.getConnector();
@@ -988,7 +987,7 @@ public class MetadataTableUtil {
}
}
- public static Map<Long,? extends Collection<FileRef>> getBulkFilesLoaded(ClientContext context,
+ public static Map<Long,? extends Collection<FileRef>> getBulkFilesLoaded(ServerContext context,
KeyExtent extent) throws IOException {
Text metadataRow = extent.getMetadataEntry();
Map<Long,List<FileRef>> result = new HashMap<>();
@@ -1035,7 +1034,7 @@ public class MetadataTableUtil {
/**
* During an upgrade from 1.6 to 1.7, we need to add the replication table
*/
- public static void createReplicationTable(ClientContext context) throws IOException {
+ public static void createReplicationTable(ServerContext context) throws IOException {
VolumeChooserEnvironment chooserEnv = new VolumeChooserEnvironment(ReplicationTable.ID);
String dir = VolumeManagerImpl.get().choose(chooserEnv, ServerConstants.getBaseUris())
@@ -1049,14 +1048,14 @@ public class MetadataTableUtil {
new Value((TabletTime.LOGICAL_TIME_ID + "0").getBytes(UTF_8)));
m.put(PREV_ROW_COLUMN.getColumnFamily(), PREV_ROW_COLUMN.getColumnQualifier(), 0,
KeyExtent.encodePrevEndRow(null));
- update(getMetadataTable(context), null, m);
+ update(context, getMetadataTable(context), null, m);
}
/**
* During an upgrade we need to move deletion requests for files under the !METADATA table to the
* root tablet.
*/
- public static void moveMetaDeleteMarkers(ClientContext context) {
+ public static void moveMetaDeleteMarkers(ServerContext context) {
String oldDeletesPrefix = "!!~del";
Range oldDeletesRange = new Range(oldDeletesPrefix, true, "!!~dem", false);
@@ -1075,7 +1074,7 @@ public class MetadataTableUtil {
}
}
- public static void moveMetaDeleteMarkersFrom14(ClientContext context) {
+ public static void moveMetaDeleteMarkersFrom14(ServerContext context) {
// new KeyExtent is only added to force update to write to the metadata table, not the root
// table
KeyExtent notMetadata = new KeyExtent(Table.ID.of("anythingNotMetadata"), null, null);
@@ -1096,7 +1095,7 @@ public class MetadataTableUtil {
}
}
- private static void moveDeleteEntry(ClientContext context, KeyExtent oldExtent,
+ private static void moveDeleteEntry(ServerContext context, KeyExtent oldExtent,
Entry<Key,Value> entry, String rowID, String prefix) {
String filename = rowID.substring(prefix.length());
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/NamespacePropUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/NamespacePropUtil.java
index 6ef9d9b..5dec315 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/NamespacePropUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/NamespacePropUtil.java
@@ -28,14 +28,14 @@ import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
import org.apache.zookeeper.KeeperException;
public class NamespacePropUtil {
- public static boolean setNamespaceProperty(Namespace.ID namespaceId, String property,
- String value) throws KeeperException, InterruptedException {
+ public static boolean setNamespaceProperty(ServerContext context, Namespace.ID namespaceId,
+ String property, String value) throws KeeperException, InterruptedException {
if (!isPropertyValid(property, value))
return false;
// create the zk node for per-namespace properties for this namespace if it doesn't already
// exist
- String zkNamespacePath = getPath(namespaceId);
+ String zkNamespacePath = getPath(context, namespaceId);
ZooReaderWriter.getInstance().putPersistentData(zkNamespacePath, new byte[0],
NodeExistsPolicy.SKIP);
@@ -53,14 +53,14 @@ public class NamespacePropUtil {
&& Property.isValidTablePropertyKey(property);
}
- public static void removeNamespaceProperty(Namespace.ID namespaceId, String property)
- throws InterruptedException, KeeperException {
- String zPath = getPath(namespaceId) + "/" + property;
+ public static void removeNamespaceProperty(ServerContext context, Namespace.ID namespaceId,
+ String property) throws InterruptedException, KeeperException {
+ String zPath = getPath(context, namespaceId) + "/" + property;
ZooReaderWriter.getInstance().recursiveDelete(zPath, NodeMissingPolicy.SKIP);
}
- private static String getPath(Namespace.ID namespaceId) {
- return ServerContext.getInstance().getZooKeeperRoot() + Constants.ZNAMESPACES + "/"
- + namespaceId + Constants.ZNAMESPACE_CONF;
+ private static String getPath(ServerContext context, Namespace.ID namespaceId) {
+ return context.getZooKeeperRoot() + Constants.ZNAMESPACES + "/" + namespaceId
+ + Constants.ZNAMESPACE_CONF;
}
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/RandomizeVolumes.java b/server/base/src/main/java/org/apache/accumulo/server/util/RandomizeVolumes.java
index af290b2..50916ee 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/RandomizeVolumes.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/RandomizeVolumes.java
@@ -44,7 +44,6 @@ import org.apache.accumulo.server.cli.ClientOnRequiredTable;
import org.apache.accumulo.server.fs.VolumeChooserEnvironment;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.fs.VolumeManagerImpl;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.hadoop.fs.Path;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,15 +54,15 @@ public class RandomizeVolumes {
public static void main(String[] args) throws AccumuloException, AccumuloSecurityException {
ClientOnRequiredTable opts = new ClientOnRequiredTable();
opts.parseArgs(RandomizeVolumes.class.getName(), args);
+ ServerContext context = opts.getServerContext();
Connector c;
if (opts.getToken() == null) {
- ServerContext context = opts.getServerContext();
c = context.getConnector();
} else {
c = opts.getConnector();
}
try {
- int status = randomize(c, opts.getTableName());
+ int status = randomize(context, c, opts.getTableName());
System.exit(status);
} catch (Exception ex) {
log.error("{}", ex.getMessage(), ex);
@@ -71,7 +70,7 @@ public class RandomizeVolumes {
}
}
- public static int randomize(Connector c, String tableName)
+ public static int randomize(ServerContext context, Connector c, String tableName)
throws IOException, AccumuloSecurityException, AccumuloException, TableNotFoundException {
final VolumeManager vm = VolumeManagerImpl.get();
if (vm.getVolumes().size() < 2) {
@@ -84,7 +83,7 @@ public class RandomizeVolumes {
return 2;
}
Table.ID tableId = Table.ID.of(tblStr);
- TableState tableState = TableManager.getInstance().getTableState(tableId);
+ TableState tableState = context.getTableManager().getTableState(tableId);
if (TableState.OFFLINE != tableState) {
log.info("Taking {} offline", tableName);
c.tableOperations().offline(tableName, true);
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/SystemPropUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/SystemPropUtil.java
index 1fdd4be..32c8a22 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/SystemPropUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/SystemPropUtil.java
@@ -30,9 +30,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SystemPropUtil {
+
private static final Logger log = LoggerFactory.getLogger(SystemPropUtil.class);
- public static boolean setSystemProperty(String property, String value)
+ public static boolean setSystemProperty(ServerContext context, String property, String value)
throws KeeperException, InterruptedException {
if (!Property.isValidZooPropertyKey(property)) {
IllegalArgumentException iae = new IllegalArgumentException(
@@ -60,17 +61,15 @@ public class SystemPropUtil {
}
// create the zk node for this property and set it's data to the specified value
- String zPath = ServerContext.getInstance().getZooKeeperRoot() + Constants.ZCONFIG + "/"
- + property;
+ String zPath = context.getZooKeeperRoot() + Constants.ZCONFIG + "/" + property;
return ZooReaderWriter.getInstance().putPersistentData(zPath, value.getBytes(UTF_8),
NodeExistsPolicy.OVERWRITE);
}
- public static void removeSystemProperty(String property)
+ public static void removeSystemProperty(ServerContext context, String property)
throws InterruptedException, KeeperException {
- String zPath = ServerContext.getInstance().getZooKeeperRoot() + Constants.ZCONFIG + "/"
- + property;
+ String zPath = context.getZooKeeperRoot() + Constants.ZCONFIG + "/" + property;
ZooReaderWriter.getInstance().recursiveDelete(zPath, NodeMissingPolicy.FAIL);
}
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/TablePropUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/TablePropUtil.java
index 37ec6b3..ab5afb4 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/TablePropUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/TablePropUtil.java
@@ -28,13 +28,19 @@ import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
import org.apache.zookeeper.KeeperException;
public class TablePropUtil {
- public static boolean setTableProperty(Table.ID tableId, String property, String value)
- throws KeeperException, InterruptedException {
+
+ public static boolean setTableProperty(ServerContext context, Table.ID tableId, String property,
+ String value) throws KeeperException, InterruptedException {
+ return setTableProperty(context.getZooKeeperRoot(), tableId, property, value);
+ }
+
+ public static boolean setTableProperty(String zkRoot, Table.ID tableId, String property,
+ String value) throws KeeperException, InterruptedException {
if (!isPropertyValid(property, value))
return false;
// create the zk node for per-table properties for this table if it doesn't already exist
- String zkTablePath = getTablePath(tableId);
+ String zkTablePath = getTablePath(zkRoot, tableId);
ZooReaderWriter.getInstance().putPersistentData(zkTablePath, new byte[0],
NodeExistsPolicy.SKIP);
@@ -52,14 +58,13 @@ public class TablePropUtil {
&& Property.isValidTablePropertyKey(property);
}
- public static void removeTableProperty(Table.ID tableId, String property)
+ public static void removeTableProperty(ServerContext context, Table.ID tableId, String property)
throws InterruptedException, KeeperException {
- String zPath = getTablePath(tableId) + "/" + property;
+ String zPath = getTablePath(context.getZooKeeperRoot(), tableId) + "/" + property;
ZooReaderWriter.getInstance().recursiveDelete(zPath, NodeMissingPolicy.SKIP);
}
- private static String getTablePath(Table.ID tableId) {
- return ServerContext.getInstance().getZooKeeperRoot() + Constants.ZTABLES + "/"
- + tableId.canonicalID() + Constants.ZTABLE_CONF;
+ private static String getTablePath(String zkRoot, Table.ID tableId) {
+ return zkRoot + Constants.ZTABLES + "/" + tableId.canonicalID() + Constants.ZTABLE_CONF;
}
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java b/server/base/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java
index b65a400..4cbe48a 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java
@@ -31,8 +31,13 @@ import org.apache.zookeeper.KeeperException;
public class TransactionWatcher extends org.apache.accumulo.fate.zookeeper.TransactionWatcher {
public static class ZooArbitrator implements Arbitrator {
- private static ServerContext context = ServerContext.getInstance();
- ZooReader rdr = new ZooReader(context.getZooKeepers(), context.getZooKeepersSessionTimeOut());
+ private ServerContext context;
+ private ZooReader rdr;
+
+ public ZooArbitrator(ServerContext context) {
+ this.context = context;
+ rdr = new ZooReader(context.getZooKeepers(), context.getZooKeepersSessionTimeOut());
+ }
@Override
public boolean transactionAlive(String type, long tid) throws Exception {
@@ -41,7 +46,8 @@ public class TransactionWatcher extends org.apache.accumulo.fate.zookeeper.Trans
return rdr.exists(path);
}
- public static void start(String type, long tid) throws KeeperException, InterruptedException {
+ public static void start(ServerContext context, String type, long tid)
+ throws KeeperException, InterruptedException {
IZooReaderWriter writer = ZooReaderWriter.getInstance();
writer.putPersistentData(context.getZooKeeperRoot() + "/" + type, new byte[] {},
NodeExistsPolicy.OVERWRITE);
@@ -51,13 +57,15 @@ public class TransactionWatcher extends org.apache.accumulo.fate.zookeeper.Trans
new byte[] {}, NodeExistsPolicy.OVERWRITE);
}
- public static void stop(String type, long tid) throws KeeperException, InterruptedException {
+ public static void stop(ServerContext context, String type, long tid)
+ throws KeeperException, InterruptedException {
IZooReaderWriter writer = ZooReaderWriter.getInstance();
writer.recursiveDelete(context.getZooKeeperRoot() + "/" + type + "/" + tid,
NodeMissingPolicy.SKIP);
}
- public static void cleanup(String type, long tid) throws KeeperException, InterruptedException {
+ public static void cleanup(ServerContext context, String type, long tid)
+ throws KeeperException, InterruptedException {
IZooReaderWriter writer = ZooReaderWriter.getInstance();
writer.recursiveDelete(context.getZooKeeperRoot() + "/" + type + "/" + tid,
NodeMissingPolicy.SKIP);
@@ -65,7 +73,7 @@ public class TransactionWatcher extends org.apache.accumulo.fate.zookeeper.Trans
NodeMissingPolicy.SKIP);
}
- public static Set<Long> allTransactionsAlive(String type)
+ public static Set<Long> allTransactionsAlive(ServerContext context, String type)
throws KeeperException, InterruptedException {
final IZooReader reader = ZooReaderWriter.getInstance();
final Set<Long> result = new HashSet<>();
@@ -89,7 +97,7 @@ public class TransactionWatcher extends org.apache.accumulo.fate.zookeeper.Trans
}
}
- public TransactionWatcher() {
- super(new ZooArbitrator());
+ public TransactionWatcher(ServerContext context) {
+ super(new ZooArbitrator(context));
}
}
diff --git a/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java b/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java
index 8b5e7b9..6e9733e 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/constraints/MetadataConstraintsTest.java
@@ -29,9 +29,11 @@ import org.apache.accumulo.core.metadata.schema.DataFileValue;
import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.DataFileColumnFamily;
import org.apache.accumulo.fate.zookeeper.TransactionWatcher.Arbitrator;
+import org.apache.accumulo.server.ServerContext;
import org.apache.hadoop.io.Text;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.easymock.EasyMock;
import org.junit.Test;
public class MetadataConstraintsTest {
@@ -62,6 +64,8 @@ public class MetadataConstraintsTest {
Mutation m = new Mutation(new Text("0;foo"));
TabletsSection.TabletColumnFamily.PREV_ROW_COLUMN.put(m, new Value("1foo".getBytes()));
+ ServerContext context = EasyMock.createMock(ServerContext.class);
+
MetadataConstraints mc = new MetadataConstraints();
List<Short> violations = mc.check(null, m);
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 6527283..aa777e2 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
@@ -90,7 +90,6 @@ import org.apache.accumulo.server.rpc.ServerAddress;
import org.apache.accumulo.server.rpc.TCredentialsUpdatingWrapper;
import org.apache.accumulo.server.rpc.TServerUtils;
import org.apache.accumulo.server.rpc.ThriftServerType;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.accumulo.server.util.Halt;
import org.apache.accumulo.server.zookeeper.ZooLock;
import org.apache.hadoop.fs.FileStatus;
@@ -403,8 +402,8 @@ public class SimpleGarbageCollector implements Iface {
if (parts.length > 2) {
Table.ID tableId = Table.ID.of(parts[1]);
String tabletDir = parts[2];
- TableManager.getInstance().updateTableStateCache(tableId);
- TableState tableState = TableManager.getInstance().getTableState(tableId);
+ context.getTableManager().updateTableStateCache(tableId);
+ TableState tableState = context.getTableManager().getTableState(tableId);
if (tableState != null && tableState != TableState.DELETING) {
// clone directories don't always exist
if (!tabletDir.startsWith(Constants.CLONE_PREFIX))
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 b22320a..28b7724 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
@@ -333,7 +333,7 @@ public class Master
+ " initialized prior to the Master transitioning to active. Please"
+ " save all logs and file a bug.");
}
- Accumulo.abortIfFateTransactions();
+ Accumulo.abortIfFateTransactions(getContext());
try {
log.info("Upgrading zookeeper");
@@ -417,7 +417,7 @@ public class Master
log.debug("Upgrade creating table {} (ID: {})", RootTable.NAME, RootTable.ID);
TableManager.prepareNewTableState(getInstanceID(), RootTable.ID, Namespace.ID.ACCUMULO,
RootTable.NAME, TableState.ONLINE, NodeExistsPolicy.SKIP);
- Initialize.initSystemTablesConfig();
+ Initialize.initSystemTablesConfig(context.getZooKeeperRoot());
// ensure root user can flush root table
security.grantTablePermission(context.rpcCreds(), security.getRootUsername(), RootTable.ID,
TablePermission.ALTER_TABLE, Namespace.ID.ACCUMULO);
@@ -587,7 +587,7 @@ public class Master
case NORMAL:
// Count offline tablets for online tables
for (TabletGroupWatcher watcher : watchers) {
- TableManager manager = TableManager.getInstance();
+ TableManager manager = context.getTableManager();
for (Entry<Table.ID,TableCounts> entry : watcher.getStats().entrySet()) {
Table.ID tableId = entry.getKey();
TableCounts counts = entry.getValue();
@@ -630,6 +630,10 @@ public class Master
return context;
}
+ public TableManager getTableManager() {
+ return context.getTableManager();
+ }
+
public Connector getConnector() throws AccumuloSecurityException, AccumuloException {
return context.getConnector();
}
@@ -848,7 +852,7 @@ public class Master
}
TabletGoalState getTableGoalState(KeyExtent extent) {
- TableState tableState = TableManager.getInstance().getTableState(extent.getTableId());
+ TableState tableState = context.getTableManager().getTableState(extent.getTableId());
if (tableState == null)
return TabletGoalState.DELETED;
switch (tableState) {
@@ -953,7 +957,7 @@ public class Master
* tablet server will load the tablet. check for offline tables and remove their migrations.
*/
private void cleanupOfflineMigrations() {
- TableManager manager = TableManager.getInstance();
+ TableManager manager = context.getTableManager();
for (Table.ID tableId : Tables.getIdToNameMap(context).keySet()) {
TableState state = manager.getTableState(tableId);
if (TableState.OFFLINE == state) {
@@ -1277,7 +1281,7 @@ public class Master
recoveryManager = new RecoveryManager(this);
- TableManager.getInstance().addObserver(this);
+ context.getTableManager().addObserver(this);
StatusThread statusThread = new StatusThread();
statusThread.start();
@@ -1649,7 +1653,7 @@ public class Master
result.add(RootTable.ID);
return result;
}
- TableManager manager = TableManager.getInstance();
+ TableManager manager = context.getTableManager();
for (Table.ID tableId : Tables.getIdToNameMap(context).keySet()) {
TableState state = manager.getTableState(tableId);
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 b49de60..3d070ee 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
@@ -402,7 +402,7 @@ public class MasterClientServiceHandler extends FateServiceHandler
master.security.canPerformSystemActions(c);
try {
- SystemPropUtil.removeSystemProperty(property);
+ SystemPropUtil.removeSystemProperty(master.getContext(), property);
updatePlugins(property);
} catch (Exception e) {
Master.log.error("Problem removing config property in zookeeper", e);
@@ -416,7 +416,7 @@ public class MasterClientServiceHandler extends FateServiceHandler
master.security.canPerformSystemActions(c);
try {
- SystemPropUtil.setSystemProperty(property, value);
+ SystemPropUtil.setSystemProperty(master.getContext(), property, value);
updatePlugins(property);
} catch (IllegalArgumentException iae) {
// throw the exception here so it is not caught and converted to a generic TException
@@ -451,9 +451,9 @@ public class MasterClientServiceHandler extends FateServiceHandler
try {
if (value == null) {
- NamespacePropUtil.removeNamespaceProperty(namespaceId, property);
+ NamespacePropUtil.removeNamespaceProperty(master.getContext(), namespaceId, property);
} else {
- NamespacePropUtil.setNamespaceProperty(namespaceId, property, value);
+ NamespacePropUtil.setNamespaceProperty(master.getContext(), namespaceId, property, value);
}
} catch (KeeperException.NoNodeException e) {
// race condition... namespace no longer exists? This call will throw an exception if the
@@ -478,8 +478,8 @@ public class MasterClientServiceHandler extends FateServiceHandler
try {
if (value == null || value.isEmpty()) {
- TablePropUtil.removeTableProperty(tableId, property);
- } else if (!TablePropUtil.setTableProperty(tableId, property, value)) {
+ TablePropUtil.removeTableProperty(master.getContext(), tableId, property);
+ } else if (!TablePropUtil.setTableProperty(master.getContext(), tableId, property, value)) {
throw new Exception("Invalid table property.");
}
} catch (KeeperException.NoNodeException e) {
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 d96874b..52447b4 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
@@ -87,7 +87,6 @@ import org.apache.accumulo.server.master.state.TabletLocationState;
import org.apache.accumulo.server.master.state.TabletLocationState.BadLocationStateException;
import org.apache.accumulo.server.master.state.TabletState;
import org.apache.accumulo.server.master.state.TabletStateStore;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.accumulo.server.tablets.TabletTime;
import org.apache.accumulo.server.util.MetadataTableUtil;
import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
@@ -205,7 +204,7 @@ abstract class TabletGroupWatcher extends Daemon {
}
Master.log.debug("{} location State: {}", store.name(), tls);
// ignore entries for tables that do not exist in zookeeper
- if (TableManager.getInstance().getTableState(tls.extent.getTableId()) == null)
+ if (master.getTableManager().getTableState(tls.extent.getTableId()) == null)
continue;
if (Master.log.isTraceEnabled())
@@ -415,7 +414,7 @@ abstract class TabletGroupWatcher extends Daemon {
private void cancelOfflineTableMigrations(TabletLocationState tls) {
TServerInstance dest = this.master.migrations.get(tls.extent);
- TableState tableState = TableManager.getInstance().getTableState(tls.extent.getTableId());
+ TableState tableState = master.getTableManager().getTableState(tls.extent.getTableId());
if (dest != null && tableState == TableState.OFFLINE) {
this.master.migrations.remove(tls.extent);
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CancelCompactions.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CancelCompactions.java
index 2532247..e3f68ed 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CancelCompactions.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CancelCompactions.java
@@ -41,8 +41,8 @@ public class CancelCompactions extends MasterRepo {
@Override
public long isReady(long tid, Master env) throws Exception {
- return Utils.reserveNamespace(namespaceId, tid, false, true, TableOperation.COMPACT_CANCEL)
- + Utils.reserveTable(tableId, tid, false, true, TableOperation.COMPACT_CANCEL);
+ return Utils.reserveNamespace(env, namespaceId, tid, false, true, TableOperation.COMPACT_CANCEL)
+ + Utils.reserveTable(env, tableId, tid, false, true, TableOperation.COMPACT_CANCEL);
}
@Override
@@ -77,7 +77,7 @@ public class CancelCompactions extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveTable(tableId, tid, false);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, false);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ChangeTableState.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ChangeTableState.java
index d7b6e8d..ee48010 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ChangeTableState.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ChangeTableState.java
@@ -22,7 +22,6 @@ import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.master.state.tables.TableState;
import org.apache.accumulo.fate.Repo;
import org.apache.accumulo.master.Master;
-import org.apache.accumulo.server.tables.TableManager;
import org.slf4j.LoggerFactory;
public class ChangeTableState extends MasterRepo {
@@ -45,8 +44,8 @@ public class ChangeTableState extends MasterRepo {
public long isReady(long tid, Master env) throws Exception {
// reserve the table so that this op does not run concurrently with create, clone, or delete
// table
- return Utils.reserveNamespace(namespaceId, tid, false, true, top)
- + Utils.reserveTable(tableId, tid, true, true, top);
+ return Utils.reserveNamespace(env, namespaceId, tid, false, true, top)
+ + Utils.reserveTable(env, tableId, tid, true, true, top);
}
@Override
@@ -55,9 +54,9 @@ public class ChangeTableState extends MasterRepo {
if (top == TableOperation.OFFLINE)
ts = TableState.OFFLINE;
- TableManager.getInstance().transitionTableState(tableId, ts);
- Utils.unreserveNamespace(namespaceId, tid, false);
- Utils.unreserveTable(tableId, tid, true);
+ env.getTableManager().transitionTableState(tableId, ts);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, true);
LoggerFactory.getLogger(ChangeTableState.class).debug("Changed table state {} {}", tableId, ts);
env.getEventCoordinator().event("Set table state of %s to %s", tableId, ts);
return null;
@@ -65,7 +64,7 @@ public class ChangeTableState extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveNamespace(namespaceId, tid, false);
- Utils.unreserveTable(tableId, tid, true);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, true);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CleanUp.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CleanUp.java
index 81cf7b4..debda60 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CleanUp.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CleanUp.java
@@ -47,7 +47,6 @@ import org.apache.accumulo.server.master.state.TabletLocationState;
import org.apache.accumulo.server.master.state.TabletState;
import org.apache.accumulo.server.problems.ProblemReports;
import org.apache.accumulo.server.security.AuditedSecurityOperation;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.accumulo.server.util.MetadataTableUtil;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.Path;
@@ -188,7 +187,7 @@ class CleanUp extends MasterRepo {
// remove table from zookeeper
try {
- TableManager.getInstance().removeTable(tableId);
+ master.getTableManager().removeTable(tableId);
Tables.clearCache(master.getContext());
} catch (Exception e) {
log.error("Failed to find table id in zookeeper", e);
@@ -202,8 +201,8 @@ class CleanUp extends MasterRepo {
log.error("{}", e.getMessage(), e);
}
- Utils.unreserveTable(tableId, tid, true);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(master, tableId, tid, true);
+ Utils.unreserveNamespace(master, namespaceId, tid, false);
LoggerFactory.getLogger(CleanUp.class).debug("Deleted table " + tableId);
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
index cbfb015..406b8a2 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CloneTable.java
@@ -43,9 +43,10 @@ public class CloneTable extends MasterRepo {
@Override
public long isReady(long tid, Master environment) throws Exception {
- long val = Utils.reserveNamespace(cloneInfo.srcNamespaceId, tid, false, true,
+ long val = Utils.reserveNamespace(environment, cloneInfo.srcNamespaceId, tid, false, true,
+ TableOperation.CLONE);
+ val += Utils.reserveTable(environment, cloneInfo.srcTableId, tid, false, true,
TableOperation.CLONE);
- val += Utils.reserveTable(cloneInfo.srcTableId, tid, false, true, TableOperation.CLONE);
return val;
}
@@ -64,8 +65,8 @@ public class CloneTable extends MasterRepo {
@Override
public void undo(long tid, Master environment) throws Exception {
- Utils.unreserveNamespace(cloneInfo.srcNamespaceId, tid, false);
- Utils.unreserveTable(cloneInfo.srcTableId, tid, false);
+ Utils.unreserveNamespace(environment, cloneInfo.srcNamespaceId, tid, false);
+ Utils.unreserveTable(environment, cloneInfo.srcTableId, tid, false);
}
}
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 480081a..dac2e93 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
@@ -24,7 +24,6 @@ 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.tables.TableManager;
class CloneZookeeper extends MasterRepo {
@@ -43,8 +42,10 @@ class CloneZookeeper extends MasterRepo {
public long isReady(long tid, Master environment) throws Exception {
long val = 0;
if (!cloneInfo.srcNamespaceId.equals(cloneInfo.namespaceId))
- val += Utils.reserveNamespace(cloneInfo.namespaceId, tid, false, true, TableOperation.CLONE);
- val += Utils.reserveTable(cloneInfo.tableId, tid, true, false, TableOperation.CLONE);
+ val += Utils.reserveNamespace(environment, cloneInfo.namespaceId, tid, false, true,
+ TableOperation.CLONE);
+ val += Utils.reserveTable(environment, cloneInfo.tableId, tid, true, false,
+ TableOperation.CLONE);
return val;
}
@@ -57,7 +58,7 @@ class CloneZookeeper extends MasterRepo {
Utils.checkTableDoesNotExist(environment.getContext(), cloneInfo.tableName, cloneInfo.tableId,
TableOperation.CLONE);
- TableManager.getInstance().cloneTable(cloneInfo.srcTableId, cloneInfo.tableId,
+ environment.getTableManager().cloneTable(cloneInfo.srcTableId, cloneInfo.tableId,
cloneInfo.tableName, cloneInfo.namespaceId, cloneInfo.propertiesToSet,
cloneInfo.propertiesToExclude, NodeExistsPolicy.OVERWRITE);
Tables.clearCache(environment.getContext());
@@ -70,10 +71,10 @@ class CloneZookeeper extends MasterRepo {
@Override
public void undo(long tid, Master environment) throws Exception {
- TableManager.getInstance().removeTable(cloneInfo.tableId);
+ environment.getTableManager().removeTable(cloneInfo.tableId);
if (!cloneInfo.srcNamespaceId.equals(cloneInfo.namespaceId))
- Utils.unreserveNamespace(cloneInfo.namespaceId, tid, false);
- Utils.unreserveTable(cloneInfo.tableId, tid, true);
+ Utils.unreserveNamespace(environment, cloneInfo.namespaceId, tid, false);
+ Utils.unreserveTable(environment, cloneInfo.tableId, tid, true);
Tables.clearCache(environment.getContext());
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
index ecbfdb8..88df1b9 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactRange.java
@@ -84,8 +84,8 @@ public class CompactRange extends MasterRepo {
@Override
public long isReady(long tid, Master env) throws Exception {
- return Utils.reserveNamespace(namespaceId, tid, false, true, TableOperation.COMPACT)
- + Utils.reserveTable(tableId, tid, false, true, TableOperation.COMPACT);
+ return Utils.reserveNamespace(env, namespaceId, tid, false, true, TableOperation.COMPACT)
+ + Utils.reserveTable(env, tableId, tid, false, true, TableOperation.COMPACT);
}
@Override
@@ -176,8 +176,8 @@ public class CompactRange extends MasterRepo {
try {
removeIterators(env, tid, tableId);
} finally {
- Utils.unreserveNamespace(namespaceId, tid, false);
- Utils.unreserveTable(tableId, tid, false);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, false);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactionDriver.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactionDriver.java
index a966371..98984ad 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactionDriver.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CompactionDriver.java
@@ -185,8 +185,8 @@ class CompactionDriver extends MasterRepo {
@Override
public Repo<Master> call(long tid, Master env) throws Exception {
CompactRange.removeIterators(env, tid, tableId);
- Utils.getReadLock(tableId, tid).unlock();
- Utils.getReadLock(namespaceId, tid).unlock();
+ Utils.getReadLock(env, tableId, tid).unlock();
+ Utils.getReadLock(env, namespaceId, tid).unlock();
return null;
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateImportDir.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateImportDir.java
index e91cbe0..4fdec0b 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateImportDir.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateImportDir.java
@@ -41,7 +41,7 @@ class CreateImportDir extends MasterRepo {
@Override
public Repo<Master> call(long tid, Master master) throws Exception {
- UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ UniqueNameAllocator namer = master.getContext().getUniqueNameAllocator();
Path exportDir = new Path(tableInfo.exportDir);
String[] tableDirs = ServerConstants.getTablesDirs();
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
index c3ca32d..65aef99 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java
@@ -44,7 +44,8 @@ public class CreateTable extends MasterRepo {
@Override
public long isReady(long tid, Master environment) throws Exception {
// reserve the table's namespace to make sure it doesn't change while the table is created
- return Utils.reserveNamespace(tableInfo.namespaceId, tid, false, true, TableOperation.CREATE);
+ return Utils.reserveNamespace(environment, tableInfo.namespaceId, tid, false, true,
+ TableOperation.CREATE);
}
@Override
@@ -67,7 +68,7 @@ public class CreateTable extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveNamespace(tableInfo.namespaceId, tid, false);
+ Utils.unreserveNamespace(env, tableInfo.namespaceId, tid, false);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteNamespace.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteNamespace.java
index 922e419..5d66a3a 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteNamespace.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteNamespace.java
@@ -33,7 +33,7 @@ public class DeleteNamespace extends MasterRepo {
@Override
public long isReady(long id, Master environment) throws Exception {
- return Utils.reserveNamespace(namespaceId, id, true, true, TableOperation.DELETE);
+ return Utils.reserveNamespace(environment, namespaceId, id, true, true, TableOperation.DELETE);
}
@Override
@@ -44,7 +44,7 @@ public class DeleteNamespace extends MasterRepo {
@Override
public void undo(long id, Master environment) throws Exception {
- Utils.unreserveNamespace(namespaceId, id, true);
+ Utils.unreserveNamespace(environment, namespaceId, id, true);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
index 7752498..0922afe 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/DeleteTable.java
@@ -22,7 +22,6 @@ import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.master.state.tables.TableState;
import org.apache.accumulo.fate.Repo;
import org.apache.accumulo.master.Master;
-import org.apache.accumulo.server.tables.TableManager;
public class DeleteTable extends MasterRepo {
@@ -38,20 +37,20 @@ public class DeleteTable extends MasterRepo {
@Override
public long isReady(long tid, Master env) throws Exception {
- return Utils.reserveNamespace(namespaceId, tid, false, false, TableOperation.DELETE)
- + Utils.reserveTable(tableId, tid, true, true, TableOperation.DELETE);
+ return Utils.reserveNamespace(env, namespaceId, tid, false, false, TableOperation.DELETE)
+ + Utils.reserveTable(env, tableId, tid, true, true, TableOperation.DELETE);
}
@Override
public Repo<Master> call(long tid, Master env) throws Exception {
- TableManager.getInstance().transitionTableState(tableId, TableState.DELETING);
+ env.getTableManager().transitionTableState(tableId, TableState.DELETING);
env.getEventCoordinator().event("deleting table %s ", tableId);
return new CleanUp(tableId, namespaceId);
}
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveTable(tableId, tid, true);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, true);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
index f9c28db..96ae5ca 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ExportTable.java
@@ -39,7 +39,7 @@ public class ExportTable extends MasterRepo {
@Override
public long isReady(long tid, Master environment) throws Exception {
- return Utils.reserveHdfsDirectory(new Path(tableInfo.exportDir).toString(), tid);
+ return Utils.reserveHdfsDirectory(environment, new Path(tableInfo.exportDir).toString(), tid);
}
@Override
@@ -49,7 +49,7 @@ public class ExportTable extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveHdfsDirectory(new Path(tableInfo.exportDir).toString(), tid);
+ Utils.unreserveHdfsDirectory(env, new Path(tableInfo.exportDir).toString(), tid);
}
public static final int VERSION = 1;
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java
index adb8039..b89771a 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCancelCompaction.java
@@ -33,8 +33,8 @@ class FinishCancelCompaction extends MasterRepo {
@Override
public Repo<Master> call(long tid, Master environment) throws Exception {
- Utils.unreserveTable(tableId, tid, false);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(environment, tableId, tid, false);
+ Utils.unreserveNamespace(environment, namespaceId, tid, false);
return null;
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCloneTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCloneTable.java
index d089ba1..fa29182 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCloneTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCloneTable.java
@@ -19,7 +19,6 @@ package org.apache.accumulo.master.tableOps;
import org.apache.accumulo.core.master.state.tables.TableState;
import org.apache.accumulo.fate.Repo;
import org.apache.accumulo.master.Master;
-import org.apache.accumulo.server.tables.TableManager;
import org.slf4j.LoggerFactory;
class FinishCloneTable extends MasterRepo {
@@ -44,13 +43,13 @@ class FinishCloneTable extends MasterRepo {
// may never create files.. therefore there is no need to consume namenode space w/ directories
// that are not used... tablet will create directories as needed
- TableManager.getInstance().transitionTableState(cloneInfo.tableId, TableState.ONLINE);
+ environment.getTableManager().transitionTableState(cloneInfo.tableId, TableState.ONLINE);
- Utils.unreserveNamespace(cloneInfo.srcNamespaceId, tid, false);
+ Utils.unreserveNamespace(environment, cloneInfo.srcNamespaceId, tid, false);
if (!cloneInfo.srcNamespaceId.equals(cloneInfo.namespaceId))
- Utils.unreserveNamespace(cloneInfo.namespaceId, tid, false);
- Utils.unreserveTable(cloneInfo.srcTableId, tid, false);
- Utils.unreserveTable(cloneInfo.tableId, tid, true);
+ Utils.unreserveNamespace(environment, cloneInfo.namespaceId, tid, false);
+ Utils.unreserveTable(environment, cloneInfo.srcTableId, tid, false);
+ Utils.unreserveTable(environment, cloneInfo.tableId, tid, true);
environment.getEventCoordinator().event("Cloned table %s from %s", cloneInfo.tableName,
cloneInfo.srcTableId);
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java
index 8b37f92..05c9169 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateNamespace.java
@@ -38,7 +38,7 @@ class FinishCreateNamespace extends MasterRepo {
@Override
public Repo<Master> call(long id, Master env) throws Exception {
- Utils.unreserveNamespace(namespaceInfo.namespaceId, id, true);
+ Utils.unreserveNamespace(env, namespaceInfo.namespaceId, id, true);
env.getEventCoordinator().event("Created namespace %s ", namespaceInfo.namespaceName);
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java
index 633decb..a80d06e 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishCreateTable.java
@@ -19,7 +19,6 @@ package org.apache.accumulo.master.tableOps;
import org.apache.accumulo.core.master.state.tables.TableState;
import org.apache.accumulo.fate.Repo;
import org.apache.accumulo.master.Master;
-import org.apache.accumulo.server.tables.TableManager;
import org.slf4j.LoggerFactory;
class FinishCreateTable extends MasterRepo {
@@ -39,10 +38,10 @@ class FinishCreateTable extends MasterRepo {
@Override
public Repo<Master> call(long tid, Master env) throws Exception {
- TableManager.getInstance().transitionTableState(tableInfo.tableId, TableState.ONLINE);
+ env.getTableManager().transitionTableState(tableInfo.tableId, TableState.ONLINE);
- Utils.unreserveNamespace(tableInfo.namespaceId, tid, false);
- Utils.unreserveTable(tableInfo.tableId, tid, true);
+ Utils.unreserveNamespace(env, tableInfo.namespaceId, tid, false);
+ Utils.unreserveTable(env, tableInfo.tableId, tid, true);
env.getEventCoordinator().event("Created table %s ", tableInfo.tableName);
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java
index 19d6bf2..9932afa 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/FinishImportTable.java
@@ -19,7 +19,6 @@ package org.apache.accumulo.master.tableOps;
import org.apache.accumulo.core.master.state.tables.TableState;
import org.apache.accumulo.fate.Repo;
import org.apache.accumulo.master.Master;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.hadoop.fs.Path;
import org.slf4j.LoggerFactory;
@@ -43,12 +42,12 @@ class FinishImportTable extends MasterRepo {
env.getFileSystem().deleteRecursively(new Path(tableInfo.importDir, "mappings.txt"));
- TableManager.getInstance().transitionTableState(tableInfo.tableId, TableState.ONLINE);
+ env.getTableManager().transitionTableState(tableInfo.tableId, TableState.ONLINE);
- Utils.unreserveNamespace(tableInfo.namespaceId, tid, false);
- Utils.unreserveTable(tableInfo.tableId, tid, true);
+ Utils.unreserveNamespace(env, tableInfo.namespaceId, tid, false);
+ Utils.unreserveTable(env, tableInfo.tableId, tid, true);
- Utils.unreserveHdfsDirectory(new Path(tableInfo.exportDir).toString(), tid);
+ Utils.unreserveHdfsDirectory(env, new Path(tableInfo.exportDir).toString(), tid);
env.getEventCoordinator().event("Imported table %s ", tableInfo.tableName);
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 d2c4238..7aff786 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
@@ -32,7 +32,6 @@ 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.fs.VolumeManager;
-import org.apache.accumulo.server.tables.TableManager;
import org.apache.accumulo.server.util.TablePropUtil;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@@ -49,7 +48,8 @@ class ImportPopulateZookeeper extends MasterRepo {
@Override
public long isReady(long tid, Master environment) throws Exception {
- return Utils.reserveTable(tableInfo.tableId, tid, true, false, TableOperation.IMPORT);
+ return Utils.reserveTable(environment, tableInfo.tableId, tid, true, false,
+ TableOperation.IMPORT);
}
private Map<String,String> getExportedProps(VolumeManager fs) throws Exception {
@@ -78,7 +78,7 @@ class ImportPopulateZookeeper extends MasterRepo {
String namespace = Tables.qualify(tableInfo.tableName).getFirst();
Namespace.ID namespaceId = Namespaces.getNamespaceId(env.getContext(), namespace);
- TableManager.getInstance().addTable(tableInfo.tableId, namespaceId, tableInfo.tableName,
+ env.getTableManager().addTable(tableInfo.tableId, namespaceId, tableInfo.tableName,
NodeExistsPolicy.OVERWRITE);
Tables.clearCache(env.getContext());
@@ -87,7 +87,8 @@ class ImportPopulateZookeeper extends MasterRepo {
}
for (Entry<String,String> entry : getExportedProps(env.getFileSystem()).entrySet())
- if (!TablePropUtil.setTableProperty(tableInfo.tableId, entry.getKey(), entry.getValue())) {
+ if (!TablePropUtil.setTableProperty(env.getContext(), tableInfo.tableId, entry.getKey(),
+ entry.getValue())) {
throw new AcceptableThriftTableOperationException(tableInfo.tableId.canonicalID(),
tableInfo.tableName, TableOperation.IMPORT, TableOperationExceptionType.OTHER,
"Invalid table property " + entry.getKey());
@@ -98,8 +99,8 @@ class ImportPopulateZookeeper extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- TableManager.getInstance().removeTable(tableInfo.tableId);
- Utils.unreserveTable(tableInfo.tableId, tid, true);
+ env.getTableManager().removeTable(tableInfo.tableId);
+ Utils.unreserveTable(env, tableInfo.tableId, tid, true);
Tables.clearCache(env.getContext());
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
index 479e61b..8e41037 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/ImportTable.java
@@ -54,8 +54,9 @@ public class ImportTable extends MasterRepo {
@Override
public long isReady(long tid, Master environment) throws Exception {
- return Utils.reserveHdfsDirectory(new Path(tableInfo.exportDir).toString(), tid)
- + Utils.reserveNamespace(tableInfo.namespaceId, tid, false, true, TableOperation.IMPORT);
+ return Utils.reserveHdfsDirectory(environment, new Path(tableInfo.exportDir).toString(), tid)
+ + Utils.reserveNamespace(environment, tableInfo.namespaceId, tid, false, true,
+ TableOperation.IMPORT);
}
@Override
@@ -119,7 +120,7 @@ public class ImportTable extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveHdfsDirectory(new Path(tableInfo.exportDir).toString(), tid);
- Utils.unreserveNamespace(tableInfo.namespaceId, tid, false);
+ Utils.unreserveHdfsDirectory(env, new Path(tableInfo.exportDir).toString(), tid);
+ Utils.unreserveNamespace(env, tableInfo.namespaceId, tid, false);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java
index 84f54cd..8d86261 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/MapImportFileNames.java
@@ -61,7 +61,7 @@ class MapImportFileNames extends MasterRepo {
FileStatus[] files = fs.listStatus(new Path(tableInfo.exportDir));
- UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ UniqueNameAllocator namer = environment.getContext().getUniqueNameAllocator();
mappingsWriter = new BufferedWriter(new OutputStreamWriter(fs.create(path), UTF_8));
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java
index c1b0d59..3138dbf 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/NamespaceCleanUp.java
@@ -22,7 +22,6 @@ import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
import org.apache.accumulo.fate.Repo;
import org.apache.accumulo.master.Master;
import org.apache.accumulo.server.security.AuditedSecurityOperation;
-import org.apache.accumulo.server.tables.TableManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,7 +47,7 @@ class NamespaceCleanUp extends MasterRepo {
// remove from zookeeper
try {
- TableManager.getInstance().removeNamespace(namespaceId);
+ master.getTableManager().removeNamespace(namespaceId);
} catch (Exception e) {
log.error("Failed to find namespace in zookeeper", e);
}
@@ -62,7 +61,7 @@ class NamespaceCleanUp extends MasterRepo {
log.error("{}", e.getMessage(), e);
}
- Utils.unreserveNamespace(namespaceId, id, true);
+ Utils.unreserveNamespace(master, namespaceId, id, true);
log.debug("Deleted namespace " + namespaceId);
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 5b5b9d3..68e783d 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
@@ -23,7 +23,6 @@ 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.tables.TableManager;
import org.apache.accumulo.server.util.TablePropUtil;
class PopulateZookeeper extends MasterRepo {
@@ -38,7 +37,8 @@ class PopulateZookeeper extends MasterRepo {
@Override
public long isReady(long tid, Master environment) throws Exception {
- return Utils.reserveTable(tableInfo.tableId, tid, true, false, TableOperation.CREATE);
+ return Utils.reserveTable(environment, tableInfo.tableId, tid, true, false,
+ TableOperation.CREATE);
}
@Override
@@ -51,11 +51,12 @@ class PopulateZookeeper extends MasterRepo {
Utils.checkTableDoesNotExist(master.getContext(), tableInfo.tableName, tableInfo.tableId,
TableOperation.CREATE);
- TableManager.getInstance().addTable(tableInfo.tableId, tableInfo.namespaceId,
+ master.getTableManager().addTable(tableInfo.tableId, tableInfo.namespaceId,
tableInfo.tableName, NodeExistsPolicy.OVERWRITE);
for (Entry<String,String> entry : tableInfo.props.entrySet())
- TablePropUtil.setTableProperty(tableInfo.tableId, entry.getKey(), entry.getValue());
+ TablePropUtil.setTableProperty(master.getContext(), tableInfo.tableId, entry.getKey(),
+ entry.getValue());
Tables.clearCache(master.getContext());
return new ChooseDir(tableInfo);
@@ -67,8 +68,8 @@ class PopulateZookeeper extends MasterRepo {
@Override
public void undo(long tid, Master master) throws Exception {
- TableManager.getInstance().removeTable(tableInfo.tableId);
- Utils.unreserveTable(tableInfo.tableId, tid, true);
+ master.getTableManager().removeTable(tableInfo.tableId);
+ Utils.unreserveTable(master, tableInfo.tableId, tid, true);
Tables.clearCache(master.getContext());
}
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 50e656c..96e5c4e 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
@@ -38,7 +38,7 @@ class PopulateZookeeperWithNamespace extends MasterRepo {
@Override
public long isReady(long id, Master environment) throws Exception {
- return Utils.reserveNamespace(namespaceInfo.namespaceId, id, true, false,
+ return Utils.reserveNamespace(environment, namespaceInfo.namespaceId, id, true, false,
TableOperation.CREATE);
}
@@ -54,8 +54,8 @@ class PopulateZookeeperWithNamespace extends MasterRepo {
namespaceInfo.namespaceName, NodeExistsPolicy.OVERWRITE);
for (Entry<String,String> entry : namespaceInfo.props.entrySet())
- NamespacePropUtil.setNamespaceProperty(namespaceInfo.namespaceId, entry.getKey(),
- entry.getValue());
+ NamespacePropUtil.setNamespaceProperty(master.getContext(), namespaceInfo.namespaceId,
+ entry.getKey(), entry.getValue());
Tables.clearCache(master.getContext());
@@ -67,9 +67,9 @@ class PopulateZookeeperWithNamespace extends MasterRepo {
@Override
public void undo(long tid, Master master) throws Exception {
- TableManager.getInstance().removeNamespace(namespaceInfo.namespaceId);
+ master.getTableManager().removeNamespace(namespaceInfo.namespaceId);
Tables.clearCache(master.getContext());
- Utils.unreserveNamespace(namespaceInfo.namespaceId, tid, true);
+ Utils.unreserveNamespace(master, namespaceInfo.namespaceId, tid, true);
}
}
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 d8e2ff1..5621fdf 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
@@ -38,7 +38,7 @@ public class RenameNamespace extends MasterRepo {
@Override
public long isReady(long id, Master environment) throws Exception {
- return Utils.reserveNamespace(namespaceId, id, true, true, TableOperation.RENAME);
+ return Utils.reserveNamespace(environment, namespaceId, id, true, true, TableOperation.RENAME);
}
public RenameNamespace(Namespace.ID namespaceId, String oldName, String newName) {
@@ -76,7 +76,7 @@ public class RenameNamespace extends MasterRepo {
Tables.clearCache(master.getContext());
} finally {
Utils.tableNameLock.unlock();
- Utils.unreserveNamespace(namespaceId, id, true);
+ Utils.unreserveNamespace(master, namespaceId, id, true);
}
LoggerFactory.getLogger(RenameNamespace.class).debug("Renamed namespace {} {} {}", namespaceId,
@@ -87,7 +87,7 @@ public class RenameNamespace extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveNamespace(namespaceId, tid, true);
+ Utils.unreserveNamespace(env, namespaceId, tid, 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 74d075c..3001911 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
@@ -45,8 +45,8 @@ public class RenameTable extends MasterRepo {
@Override
public long isReady(long tid, Master env) throws Exception {
- return Utils.reserveNamespace(namespaceId, tid, false, true, TableOperation.RENAME)
- + Utils.reserveTable(tableId, tid, true, true, TableOperation.RENAME);
+ return Utils.reserveNamespace(env, namespaceId, tid, false, true, TableOperation.RENAME)
+ + Utils.reserveTable(env, tableId, tid, true, true, TableOperation.RENAME);
}
public RenameTable(Namespace.ID namespaceId, Table.ID tableId, String oldTableName,
@@ -99,8 +99,8 @@ public class RenameTable extends MasterRepo {
Tables.clearCache(master.getContext());
} finally {
Utils.tableNameLock.unlock();
- Utils.unreserveTable(tableId, tid, true);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(master, tableId, tid, true);
+ Utils.unreserveNamespace(master, namespaceId, tid, false);
}
LoggerFactory.getLogger(RenameTable.class).debug("Renamed table {} {} {}", tableId,
@@ -111,8 +111,8 @@ public class RenameTable extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveTable(tableId, tid, true);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, true);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
index cd00df0..0c61fb8 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOp.java
@@ -46,8 +46,8 @@ public class TableRangeOp extends MasterRepo {
@Override
public long isReady(long tid, Master env) throws Exception {
- return Utils.reserveNamespace(namespaceId, tid, false, true, TableOperation.MERGE)
- + Utils.reserveTable(tableId, tid, true, true, TableOperation.MERGE);
+ return Utils.reserveNamespace(env, namespaceId, tid, false, true, TableOperation.MERGE)
+ + Utils.reserveTable(env, tableId, tid, true, true, TableOperation.MERGE);
}
public TableRangeOp(MergeInfo.Operation op, Namespace.ID namespaceId, Table.ID tableId,
@@ -95,8 +95,8 @@ public class TableRangeOp extends MasterRepo {
if (mergeInfo.getState() != MergeState.NONE)
log.info("removing merge information {}", mergeInfo);
env.clearMergeState(tableId);
- Utils.unreserveNamespace(namespaceId, tid, false);
- Utils.unreserveTable(tableId, tid, true);
+ Utils.unreserveNamespace(env, namespaceId, tid, false);
+ Utils.unreserveTable(env, tableId, tid, true);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java
index a6f69b8..d24b27b 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/TableRangeOpWait.java
@@ -67,8 +67,8 @@ class TableRangeOpWait extends MasterRepo {
MergeInfo mergeInfo = master.getMergeInfo(tableId);
log.info("removing merge information " + mergeInfo);
master.clearMergeState(tableId);
- Utils.unreserveTable(tableId, tid, true);
- Utils.unreserveNamespace(namespaceId, tid, false);
+ Utils.unreserveTable(master, tableId, tid, true);
+ Utils.unreserveNamespace(master, namespaceId, tid, false);
return null;
}
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 0906af7..75db68d 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
@@ -38,7 +38,7 @@ import org.apache.accumulo.core.zookeeper.ZooUtil;
import org.apache.accumulo.fate.zookeeper.DistributedReadWriteLock;
import org.apache.accumulo.fate.zookeeper.IZooReaderWriter;
import org.apache.accumulo.fate.zookeeper.ZooReservation;
-import org.apache.accumulo.server.ServerContext;
+import org.apache.accumulo.master.Master;
import org.apache.accumulo.server.zookeeper.ZooQueueLock;
import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
import org.apache.zookeeper.KeeperException;
@@ -49,8 +49,6 @@ public class Utils {
private static final byte[] ZERO_BYTE = {'0'};
private static final Logger log = LoggerFactory.getLogger(Utils.class);
- private static final ServerContext context = ServerContext.getInstance();
-
static void checkTableDoesNotExist(ClientContext context, String tableName, Table.ID tableId,
TableOperation operation) throws AcceptableThriftTableOperationException {
@@ -82,12 +80,12 @@ public class Utils {
static final Lock tableNameLock = new ReentrantLock();
static final Lock idLock = new ReentrantLock();
- public static long reserveTable(Table.ID tableId, long tid, boolean writeLock,
+ public static long reserveTable(Master env, Table.ID tableId, long tid, boolean writeLock,
boolean tableMustExist, TableOperation op) throws Exception {
- if (getLock(tableId, tid, writeLock).tryLock()) {
+ if (getLock(env.getContext(), tableId, tid, writeLock).tryLock()) {
if (tableMustExist) {
IZooReaderWriter zk = ZooReaderWriter.getInstance();
- if (!zk.exists(context.getZooKeeperRoot() + Constants.ZTABLES + "/" + tableId))
+ if (!zk.exists(env.getContext().getZooKeeperRoot() + Constants.ZTABLES + "/" + tableId))
throw new AcceptableThriftTableOperationException(tableId.canonicalID(), "", op,
TableOperationExceptionType.NOTFOUND, "Table does not exist");
}
@@ -98,26 +96,27 @@ public class Utils {
return 100;
}
- public static void unreserveTable(Table.ID tableId, long tid, boolean writeLock)
+ public static void unreserveTable(Master env, Table.ID tableId, long tid, boolean writeLock)
throws Exception {
- getLock(tableId, tid, writeLock).unlock();
+ getLock(env.getContext(), tableId, tid, writeLock).unlock();
log.info("table {} ({}) unlocked for ", tableId, Long.toHexString(tid),
(writeLock ? "write" : "read"));
}
- public static void unreserveNamespace(Namespace.ID namespaceId, long id, boolean writeLock)
- throws Exception {
- getLock(namespaceId, id, writeLock).unlock();
+ public static void unreserveNamespace(Master env, Namespace.ID namespaceId, long id,
+ boolean writeLock) throws Exception {
+ getLock(env.getContext(), namespaceId, id, writeLock).unlock();
log.info("namespace {} ({}) unlocked for {}", namespaceId, Long.toHexString(id),
(writeLock ? "write" : "read"));
}
- public static long reserveNamespace(Namespace.ID namespaceId, long id, boolean writeLock,
- boolean mustExist, TableOperation op) throws Exception {
- if (getLock(namespaceId, id, writeLock).tryLock()) {
+ public static long reserveNamespace(Master env, Namespace.ID namespaceId, long id,
+ boolean writeLock, boolean mustExist, TableOperation op) throws Exception {
+ if (getLock(env.getContext(), namespaceId, id, writeLock).tryLock()) {
if (mustExist) {
IZooReaderWriter zk = ZooReaderWriter.getInstance();
- if (!zk.exists(context.getZooKeeperRoot() + Constants.ZNAMESPACES + "/" + namespaceId))
+ if (!zk.exists(
+ env.getContext().getZooKeeperRoot() + Constants.ZNAMESPACES + "/" + namespaceId))
throw new AcceptableThriftTableOperationException(namespaceId.canonicalID(), "", op,
TableOperationExceptionType.NAMESPACE_NOTFOUND, "Namespace does not exist");
}
@@ -128,9 +127,9 @@ public class Utils {
return 100;
}
- public static long reserveHdfsDirectory(String directory, long tid)
+ public static long reserveHdfsDirectory(Master env, String directory, long tid)
throws KeeperException, InterruptedException {
- String resvPath = context.getZooKeeperRoot() + Constants.ZHDFS_RESERVATIONS + "/"
+ String resvPath = env.getContext().getZooKeeperRoot() + Constants.ZHDFS_RESERVATIONS + "/"
+ Base64.getEncoder().encodeToString(directory.getBytes(UTF_8));
IZooReaderWriter zk = ZooReaderWriter.getInstance();
@@ -141,14 +140,15 @@ public class Utils {
return 50;
}
- public static void unreserveHdfsDirectory(String directory, long tid)
+ public static void unreserveHdfsDirectory(Master env, String directory, long tid)
throws KeeperException, InterruptedException {
- String resvPath = context.getZooKeeperRoot() + Constants.ZHDFS_RESERVATIONS + "/"
+ String resvPath = env.getContext().getZooKeeperRoot() + Constants.ZHDFS_RESERVATIONS + "/"
+ Base64.getEncoder().encodeToString(directory.getBytes(UTF_8));
ZooReservation.release(ZooReaderWriter.getInstance(), resvPath, String.format("%016x", tid));
}
- private static Lock getLock(AbstractId id, long tid, boolean writeLock) throws Exception {
+ private static Lock getLock(ClientContext context, AbstractId id, long tid, boolean writeLock)
+ throws Exception {
byte[] lockData = String.format("%016x", tid).getBytes(UTF_8);
ZooQueueLock qlock = new ZooQueueLock(
context.getZooKeeperRoot() + Constants.ZTABLE_LOCKS + "/" + id, false);
@@ -163,8 +163,8 @@ public class Utils {
return lock;
}
- public static Lock getReadLock(AbstractId tableId, long tid) throws Exception {
- return Utils.getLock(tableId, tid, false);
+ public static Lock getReadLock(Master env, AbstractId tableId, long tid) throws Exception {
+ return Utils.getLock(env.getContext(), tableId, tid, false);
}
static void checkNamespaceDoesNotExist(ClientContext context, String namespace,
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java
index d3f8471..696f3f1 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/WriteExportFiles.java
@@ -84,9 +84,9 @@ class WriteExportFiles extends MasterRepo {
@Override
public long isReady(long tid, Master master) throws Exception {
- long reserved = Utils.reserveNamespace(tableInfo.namespaceID, tid, false, true,
+ long reserved = Utils.reserveNamespace(master, tableInfo.namespaceID, tid, false, true,
TableOperation.EXPORT)
- + Utils.reserveTable(tableInfo.tableID, tid, false, true, TableOperation.EXPORT);
+ + Utils.reserveTable(master, tableInfo.tableID, tid, false, true, TableOperation.EXPORT);
if (reserved > 0)
return reserved;
@@ -131,16 +131,16 @@ class WriteExportFiles extends MasterRepo {
tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER,
"Failed to create export files " + ioe.getMessage());
}
- Utils.unreserveNamespace(tableInfo.namespaceID, tid, false);
- Utils.unreserveTable(tableInfo.tableID, tid, false);
- Utils.unreserveHdfsDirectory(new Path(tableInfo.exportDir).toString(), tid);
+ Utils.unreserveNamespace(master, tableInfo.namespaceID, tid, false);
+ Utils.unreserveTable(master, tableInfo.tableID, tid, false);
+ Utils.unreserveHdfsDirectory(master, new Path(tableInfo.exportDir).toString(), tid);
return null;
}
@Override
public void undo(long tid, Master env) throws Exception {
- Utils.unreserveNamespace(tableInfo.namespaceID, tid, false);
- Utils.unreserveTable(tableInfo.tableID, tid, false);
+ Utils.unreserveNamespace(env, tableInfo.namespaceID, tid, false);
+ Utils.unreserveTable(env, tableInfo.tableID, tid, false);
}
public static void exportTable(VolumeManager fs, ServerContext context, String tableName,
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/BulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/BulkImport.java
index e17f3b6..aa59d07 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/BulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/BulkImport.java
@@ -41,6 +41,7 @@ import org.apache.accumulo.master.Master;
import org.apache.accumulo.master.tableOps.MasterRepo;
import org.apache.accumulo.master.tableOps.Utils;
import org.apache.accumulo.server.ServerConstants;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.tablets.UniqueNameAllocator;
import org.apache.accumulo.server.util.MetadataTableUtil;
@@ -87,15 +88,15 @@ public class BulkImport extends MasterRepo {
@Override
public long isReady(long tid, Master master) throws Exception {
- if (!Utils.getReadLock(tableId, tid).tryLock())
+ if (!Utils.getReadLock(master, tableId, tid).tryLock())
return 100;
Tables.clearCache(master.getContext());
if (Tables.getTableState(master.getContext(), tableId) == TableState.ONLINE) {
long reserve1, reserve2;
- reserve1 = reserve2 = Utils.reserveHdfsDirectory(sourceDir, tid);
+ reserve1 = reserve2 = Utils.reserveHdfsDirectory(master, sourceDir, tid);
if (reserve1 == 0)
- reserve2 = Utils.reserveHdfsDirectory(errorDir, tid);
+ reserve2 = Utils.reserveHdfsDirectory(master, errorDir, tid);
return reserve2;
} else {
throw new AcceptableThriftTableOperationException(tableId.canonicalID(), null,
@@ -107,7 +108,7 @@ public class BulkImport extends MasterRepo {
public Repo<Master> call(long tid, Master master) throws Exception {
log.debug(" tid {} sourceDir {}", tid, sourceDir);
- Utils.getReadLock(tableId, tid).lock();
+ Utils.getReadLock(master, tableId, tid).lock();
// check that the error directory exists and is empty
VolumeManager fs = master.getFileSystem();
@@ -132,7 +133,7 @@ public class BulkImport extends MasterRepo {
TableOperation.BULK_IMPORT, TableOperationExceptionType.BULK_BAD_ERROR_DIRECTORY,
errorDir + " is not empty");
- ZooArbitrator.start(Constants.BULK_ARBITRATOR_TYPE, tid);
+ ZooArbitrator.start(master.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
master.updateBulkImportStatus(sourceDir, BulkImportState.MOVING);
// move the files into the directory
try {
@@ -147,7 +148,8 @@ public class BulkImport extends MasterRepo {
}
}
- private Path createNewBulkDir(VolumeManager fs, Table.ID tableId) throws IOException {
+ private Path createNewBulkDir(ServerContext context, VolumeManager fs, Table.ID tableId)
+ throws IOException {
Path tempPath = fs.matchingFileSystem(new Path(sourceDir), ServerConstants.getTablesDirs());
if (tempPath == null)
throw new IOException(sourceDir + " is not in a volume configured for Accumulo");
@@ -164,7 +166,7 @@ public class BulkImport extends MasterRepo {
// fs.mkdirs()... if only hadoop had a mkdir() function
// that failed when the dir existed
- UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ UniqueNameAllocator namer = context.getUniqueNameAllocator();
while (true) {
Path newBulkDir = new Path(directory, Constants.BULK_PREFIX + namer.getNextName());
@@ -180,7 +182,7 @@ public class BulkImport extends MasterRepo {
private String prepareBulkImport(Master master, final VolumeManager fs, String dir,
Table.ID tableId) throws Exception {
- final Path bulkDir = createNewBulkDir(fs, tableId);
+ final Path bulkDir = createNewBulkDir(master.getContext(), fs, tableId);
MetadataTableUtil.addBulkLoadInProgressFlag(master.getContext(),
"/" + bulkDir.getParent().getName() + "/" + bulkDir.getName());
@@ -188,7 +190,7 @@ public class BulkImport extends MasterRepo {
Path dirPath = new Path(dir);
FileStatus[] mapFiles = fs.listStatus(dirPath);
- final UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ final UniqueNameAllocator namer = master.getContext().getUniqueNameAllocator();
int workerCount = master.getConfiguration().getCount(Property.MASTER_BULK_RENAME_THREADS);
SimpleThreadPool workers = new SimpleThreadPool(workerCount, "bulk move");
@@ -265,9 +267,9 @@ public class BulkImport extends MasterRepo {
@Override
public void undo(long tid, Master environment) throws Exception {
// unreserve source/error directories
- Utils.unreserveHdfsDirectory(sourceDir, tid);
- Utils.unreserveHdfsDirectory(errorDir, tid);
- Utils.getReadLock(tableId, tid).unlock();
- ZooArbitrator.cleanup(Constants.BULK_ARBITRATOR_TYPE, tid);
+ Utils.unreserveHdfsDirectory(environment, sourceDir, tid);
+ Utils.unreserveHdfsDirectory(environment, errorDir, tid);
+ Utils.getReadLock(environment, tableId, tid).unlock();
+ ZooArbitrator.cleanup(environment.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CleanUpBulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CleanUpBulkImport.java
index 4ef01d4..e2b1cb4 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CleanUpBulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CleanUpBulkImport.java
@@ -60,11 +60,11 @@ public class CleanUpBulkImport extends MasterRepo {
Connector conn = master.getConnector();
MetadataTableUtil.removeBulkLoadEntries(conn, tableId, tid);
log.debug("releasing HDFS reservations for " + source + " and " + error);
- Utils.unreserveHdfsDirectory(source, tid);
- Utils.unreserveHdfsDirectory(error, tid);
- Utils.getReadLock(tableId, tid).unlock();
+ Utils.unreserveHdfsDirectory(master, source, tid);
+ Utils.unreserveHdfsDirectory(master, error, tid);
+ Utils.getReadLock(master, tableId, tid).unlock();
log.debug("completing bulkDir import transaction " + tid);
- ZooArbitrator.cleanup(Constants.BULK_ARBITRATOR_TYPE, tid);
+ ZooArbitrator.cleanup(master.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
master.removeBulkImportStatus(source);
return null;
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CompleteBulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CompleteBulkImport.java
index 5c85f7a..7eede40 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CompleteBulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer1/CompleteBulkImport.java
@@ -41,7 +41,7 @@ public class CompleteBulkImport extends MasterRepo {
@Override
public Repo<Master> call(long tid, Master master) throws Exception {
- ZooArbitrator.stop(Constants.BULK_ARBITRATOR_TYPE, tid);
+ ZooArbitrator.stop(master.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
return new CopyFailed(tableId, source, bulk, error);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/BulkImportMove.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/BulkImportMove.java
index 6b5d26f..7dc8544 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/BulkImportMove.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/BulkImportMove.java
@@ -77,7 +77,7 @@ class BulkImportMove extends MasterRepo {
VolumeManager fs = master.getFileSystem();
if (bulkInfo.tableState == TableState.ONLINE) {
- ZooArbitrator.start(Constants.BULK_ARBITRATOR_TYPE, tid);
+ ZooArbitrator.start(master.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
}
try {
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CleanUpBulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CleanUpBulkImport.java
index 072285c..31db07b 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CleanUpBulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CleanUpBulkImport.java
@@ -55,8 +55,8 @@ public class CleanUpBulkImport extends MasterRepo {
Connector conn = master.getConnector();
MetadataTableUtil.removeBulkLoadEntries(conn, info.tableId, tid);
}
- Utils.unreserveHdfsDirectory(info.sourceDir, tid);
- Utils.getReadLock(info.tableId, tid).unlock();
+ Utils.unreserveHdfsDirectory(master, info.sourceDir, tid);
+ Utils.getReadLock(master, info.tableId, tid).unlock();
// delete json renames and mapping files
Path renamingFile = new Path(bulkDir, Constants.BULK_RENAME_FILE);
Path mappingFile = new Path(bulkDir, Constants.BULK_LOAD_MAPPING);
@@ -69,7 +69,7 @@ public class CleanUpBulkImport extends MasterRepo {
log.debug("completing bulkDir import transaction " + tid);
if (info.tableState == TableState.ONLINE) {
- ZooArbitrator.cleanup(Constants.BULK_ARBITRATOR_TYPE, tid);
+ ZooArbitrator.cleanup(master.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
}
return null;
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CompleteBulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CompleteBulkImport.java
index ac7a8a5..23faeb5 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CompleteBulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/CompleteBulkImport.java
@@ -34,7 +34,7 @@ public class CompleteBulkImport extends MasterRepo {
@Override
public Repo<Master> call(long tid, Master master) throws Exception {
- ZooArbitrator.stop(Constants.BULK_ARBITRATOR_TYPE, tid);
+ ZooArbitrator.stop(master.getContext(), Constants.BULK_ARBITRATOR_TYPE, tid);
return new CleanUpBulkImport(info);
}
}
diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImport.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImport.java
index 4c0030d..21fa939 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImport.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/bulkVer2/PrepBulkImport.java
@@ -43,6 +43,7 @@ import org.apache.accumulo.master.Master;
import org.apache.accumulo.master.tableOps.MasterRepo;
import org.apache.accumulo.master.tableOps.Utils;
import org.apache.accumulo.server.ServerConstants;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.tablets.UniqueNameAllocator;
import org.apache.accumulo.server.zookeeper.TransactionWatcher;
@@ -82,14 +83,14 @@ public class PrepBulkImport extends MasterRepo {
@Override
public long isReady(long tid, Master master) throws Exception {
- if (!Utils.getReadLock(bulkInfo.tableId, tid).tryLock())
+ if (!Utils.getReadLock(master, bulkInfo.tableId, tid).tryLock())
return 100;
if (master.onlineTabletServers().size() == 0)
return 500;
Tables.clearCache(master.getContext());
- return Utils.reserveHdfsDirectory(bulkInfo.sourceDir, tid);
+ return Utils.reserveHdfsDirectory(master, bulkInfo.sourceDir, tid);
}
@VisibleForTesting
@@ -180,11 +181,11 @@ public class PrepBulkImport extends MasterRepo {
bulkInfo.tableState = Tables.getTableState(master.getContext(), bulkInfo.tableId);
VolumeManager fs = master.getFileSystem();
- final UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ final UniqueNameAllocator namer = master.getContext().getUniqueNameAllocator();
Path sourceDir = new Path(bulkInfo.sourceDir);
FileStatus[] files = fs.listStatus(sourceDir);
- Path bulkDir = createNewBulkDir(fs, bulkInfo.tableId);
+ Path bulkDir = createNewBulkDir(master.getContext(), fs, bulkInfo.tableId);
Path mappingFile = new Path(sourceDir, Constants.BULK_LOAD_MAPPING);
Map<String,String> oldToNewNameMap = new HashMap<>();
@@ -220,7 +221,8 @@ public class PrepBulkImport extends MasterRepo {
return new BulkImportMove(bulkInfo);
}
- private Path createNewBulkDir(VolumeManager fs, Table.ID tableId) throws IOException {
+ private Path createNewBulkDir(ServerContext context, VolumeManager fs, Table.ID tableId)
+ throws IOException {
Path tempPath = fs.matchingFileSystem(new Path(bulkInfo.sourceDir),
ServerConstants.getTablesDirs());
if (tempPath == null)
@@ -232,7 +234,7 @@ public class PrepBulkImport extends MasterRepo {
Path directory = new Path(tableDir + "/" + tableId);
fs.mkdirs(directory);
- UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ UniqueNameAllocator namer = context.getUniqueNameAllocator();
while (true) {
Path newBulkDir = new Path(directory, Constants.BULK_PREFIX + namer.getNextName());
if (fs.mkdirs(newBulkDir))
@@ -246,9 +248,9 @@ public class PrepBulkImport extends MasterRepo {
@Override
public void undo(long tid, Master environment) throws Exception {
// unreserve sourceDir/error directories
- Utils.unreserveHdfsDirectory(bulkInfo.sourceDir, tid);
- Utils.getReadLock(bulkInfo.tableId, tid).unlock();
- TransactionWatcher.ZooArbitrator.cleanup(Constants.BULK_ARBITRATOR_TYPE, tid);
+ Utils.unreserveHdfsDirectory(environment, bulkInfo.sourceDir, tid);
+ Utils.getReadLock(environment, bulkInfo.tableId, tid).unlock();
+ TransactionWatcher.ZooArbitrator.cleanup(environment.getContext(),
+ Constants.BULK_ARBITRATOR_TYPE, tid);
}
-
}
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
index 5287810..a048c1d 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
@@ -256,7 +256,7 @@ public class Monitor implements HighlyAvailableService {
public void run() {
synchronized (Monitor.class) {
if (cachedInstanceName.get().equals(DEFAULT_INSTANCE_NAME)) {
- final String instanceName = ServerContext.getInstance().getInstanceName();
+ final String instanceName = context.getInstanceName();
if (null != instanceName) {
cachedInstanceName.set(instanceName);
}
@@ -434,16 +434,15 @@ public class Monitor implements HighlyAvailableService {
final String app = "monitor";
ServerOpts opts = new ServerOpts();
opts.parseArgs(app, args);
- ServerContext context = ServerContext.getInstance();
+ Monitor.context = ServerContext.getInstance();
context.setupServer(app, Monitor.class.getName(), opts.getAddress());
try {
config = context.getServerConfFactory();
- Monitor.context = context;
Monitor monitor = new Monitor();
// Servlets need access to limit requests when the monitor is not active, but Servlets are
// instantiated via reflection. Expose the service this way instead.
Monitor.HA_SERVICE_INSTANCE = monitor;
- monitor.run(context.getHostname());
+ monitor.run();
} finally {
context.teardownServer();
}
@@ -451,13 +450,13 @@ public class Monitor implements HighlyAvailableService {
private static long START_TIME;
- public void run(String hostname) {
+ public void run() {
Monitor.START_TIME = System.currentTimeMillis();
int ports[] = config.getSystemConfiguration().getPort(Property.MONITOR_PORT);
for (int port : ports) {
try {
log.debug("Creating monitor on port {}", port);
- server = new EmbeddedWebServer(hostname, port);
+ server = new EmbeddedWebServer(context.getHostname(), port);
server.addServlet(getDefaultServlet(), "/resources/*");
server.addServlet(getRestServlet(), "/rest/*");
server.addServlet(getViewServlet(), "/*");
@@ -479,7 +478,7 @@ public class Monitor implements HighlyAvailableService {
throw new RuntimeException(e);
}
- String advertiseHost = hostname;
+ String advertiseHost = context.getHostname();
if (advertiseHost.equals("0.0.0.0")) {
try {
advertiseHost = InetAddress.getLocalHost().getHostName();
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 852209e..80c31c1 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
@@ -93,7 +93,7 @@ public class ReplicationResource {
String peerName = property.getKey().substring(definedPeersPrefix.length());
ReplicaSystem replica;
try {
- replica = replicaSystemFactory.get(property.getValue());
+ replica = replicaSystemFactory.get(Monitor.getContext(), property.getValue());
} catch (Exception e) {
log.warn("Could not instantiate ReplicaSystem for {} with configuration {}",
property.getKey(), property.getValue(), e);
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 b19beae..bfda9d5 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
@@ -79,7 +79,7 @@ public class TablesResource {
tableStats.put(Table.ID.of(te.getKey()), te.getValue());
Map<String,Double> compactingByTable = TableInfoUtil.summarizeTableStats(Monitor.getMmi());
- TableManager tableManager = TableManager.getInstance();
+ TableManager tableManager = Monitor.getContext().getTableManager();
// Add tables to the list
for (Map.Entry<String,Table.ID> entry : Tables.getNameToIdMap(Monitor.getContext())
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java
index 0dfcca1..4e20dd1 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/rest/trace/TracesResource.java
@@ -56,7 +56,6 @@ import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
import org.apache.accumulo.core.util.Pair;
import org.apache.accumulo.monitor.Monitor;
-import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.security.SecurityUtil;
import org.apache.accumulo.tracer.SpanTree;
import org.apache.accumulo.tracer.SpanTreeVisitor;
@@ -359,7 +358,7 @@ public class TracesResource {
private Scanner getScanner(String table, String principal, AuthenticationToken at)
throws AccumuloException, AccumuloSecurityException {
try {
- Connector conn = ServerContext.getInstance().getConnector(principal, at);
+ Connector conn = Monitor.getContext().getConnector(principal, at);
if (!conn.tableOperations().exists(table)) {
return null;
}
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppender.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppender.java
index d925f63..c886b0f 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppender.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/util/AccumuloMonitorAppender.java
@@ -136,14 +136,15 @@ public class AccumuloMonitorAppender extends AsyncAppender implements AutoClosea
// path and zooCache are lazily set the first time this tracker is run
// this allows the tracker to be constructed and scheduled during log4j initialization without
// triggering any actual logs from the Accumulo or ZooKeeper code
+ private ServerContext context = null;
private String path = null;
private ZooCache zooCache = null;
@Override
public MonitorLocation get() {
// lazily set up path and zooCache (see comment in constructor)
- if (this.zooCache == null) {
- ServerContext context = ServerContext.getInstance();
+ if (this.context == null) {
+ this.context = ServerContext.getInstance();
this.path = context.getZooKeeperRoot() + Constants.ZMONITOR_LOG4J_ADDR;
this.zooCache = context.getZooCache();
}
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 7dd90f8..9d9b3a1 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
@@ -286,7 +286,7 @@ public class TabletServer implements Runnable {
private static final long TIME_BETWEEN_LOCATOR_CACHE_CLEARS = 60 * 60 * 1000;
private final GarbageCollectionLogger gcLogger = new GarbageCollectionLogger();
- private final TransactionWatcher watcher = new TransactionWatcher();
+ private final TransactionWatcher watcher;
private final ZooCache masterLockCache = new ZooCache();
private final TabletServerLogger logger;
@@ -357,6 +357,7 @@ public class TabletServer implements Runnable {
public TabletServer(ServerContext context) {
this.context = context;
+ this.watcher = new TransactionWatcher(context);
this.confFactory = context.getServerConfFactory();
this.fs = context.getVolumeManager();
final AccumuloConfiguration aconf = getConfiguration();
@@ -2513,9 +2514,10 @@ public class TabletServer implements Runnable {
getTableConfiguration(extent));
TabletData data;
if (extent.isRootTablet()) {
- data = new TabletData(fs, ZooReaderWriter.getInstance(), getTableConfiguration(extent));
+ data = new TabletData(context, fs, ZooReaderWriter.getInstance(),
+ getTableConfiguration(extent));
} else {
- data = new TabletData(extent, fs, tabletsKeyValues.entrySet().iterator());
+ data = new TabletData(context, extent, fs, tabletsKeyValues.entrySet().iterator());
}
tablet = new Tablet(TabletServer.this, extent, trm, data);
@@ -2983,9 +2985,9 @@ public class TabletServer implements Runnable {
}
}
- private static Pair<Text,KeyExtent> verifyRootTablet(KeyExtent extent, TServerInstance instance)
- throws DistributedStoreException, AccumuloException {
- ZooTabletStateStore store = new ZooTabletStateStore();
+ private static Pair<Text,KeyExtent> verifyRootTablet(ServerContext context, KeyExtent extent,
+ TServerInstance instance) throws DistributedStoreException, AccumuloException {
+ ZooTabletStateStore store = new ZooTabletStateStore(context);
if (!store.iterator().hasNext()) {
throw new AccumuloException("Illegal state: location is not set in zookeeper");
}
@@ -2999,7 +3001,7 @@ public class TabletServer implements Runnable {
}
try {
- return new Pair<>(new Text(MetadataTableUtil.getRootTabletDir()), null);
+ return new Pair<>(new Text(MetadataTableUtil.getRootTabletDir(context)), null);
} catch (IOException e) {
throw new AccumuloException(e);
}
@@ -3013,7 +3015,7 @@ public class TabletServer implements Runnable {
log.debug("verifying extent {}", extent);
if (extent.isRootTablet()) {
- return verifyRootTablet(extent, instance);
+ return verifyRootTablet(context, extent, instance);
}
Table.ID tableToVerify = MetadataTable.ID;
if (extent.isMeta())
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
index 7f90340..1e71e8a 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/AccumuloReplicaSystem.java
@@ -130,7 +130,7 @@ public class AccumuloReplicaSystem implements ReplicaSystem {
}
@Override
- public void configure(String configuration) {
+ public void configure(ServerContext context, String configuration) {
requireNonNull(configuration);
// instance_name,zookeepers
@@ -146,8 +146,7 @@ public class AccumuloReplicaSystem implements ReplicaSystem {
instanceName = configuration.substring(0, index);
zookeepers = configuration.substring(index + 1);
-
- conf = ServerContext.getInstance().getServerConfFactory().getSystemConfiguration();
+ conf = context.getConfiguration();
try {
fs = VolumeManagerImpl.get(conf);
@@ -160,8 +159,7 @@ public class AccumuloReplicaSystem implements ReplicaSystem {
@Override
public Status replicate(final Path p, final Status status, final ReplicationTarget target,
final ReplicaSystemHelper helper) {
- final AccumuloConfiguration localConf = ServerContext.getInstance().getServerConfFactory()
- .getSystemConfiguration();
+ final AccumuloConfiguration localConf = conf;
log.debug("Replication RPC timeout is {}",
localConf.get(Property.REPLICATION_RPC_TIMEOUT.getKey()));
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationProcessor.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationProcessor.java
index 69bc021..35fdbe7 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationProcessor.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationProcessor.java
@@ -25,7 +25,6 @@ import java.util.NoSuchElementException;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Scanner;
-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.data.Range;
@@ -34,6 +33,7 @@ import org.apache.accumulo.core.replication.ReplicationSchema.WorkSection;
import org.apache.accumulo.core.replication.ReplicationTable;
import org.apache.accumulo.core.replication.ReplicationTableOfflineException;
import org.apache.accumulo.core.replication.ReplicationTarget;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper;
import org.apache.accumulo.server.replication.ReplicaSystem;
@@ -55,13 +55,13 @@ import com.google.protobuf.InvalidProtocolBufferException;
public class ReplicationProcessor implements Processor {
private static final Logger log = LoggerFactory.getLogger(ReplicationProcessor.class);
- private final ClientContext context;
+ private final ServerContext context;
private final AccumuloConfiguration conf;
private final VolumeManager fs;
private final ReplicaSystemHelper helper;
private final ReplicaSystemFactory factory;
- public ReplicationProcessor(ClientContext context, AccumuloConfiguration conf, VolumeManager fs) {
+ public ReplicationProcessor(ServerContext context, AccumuloConfiguration conf, VolumeManager fs) {
this.context = context;
this.conf = conf;
this.fs = fs;
@@ -151,7 +151,7 @@ public class ReplicationProcessor implements Processor {
String peerType = getPeerType(target.getPeerName());
// Get the peer that we're replicating to
- return factory.get(peerType);
+ return factory.get(context, peerType);
}
protected String getPeerType(String peerName) {
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationWorker.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationWorker.java
index 2ccfe76..123401a 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationWorker.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/replication/ReplicationWorker.java
@@ -18,11 +18,11 @@ package org.apache.accumulo.tserver.replication;
import java.util.concurrent.ThreadPoolExecutor;
-import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.DefaultConfiguration;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.replication.ReplicationConstants;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.zookeeper.DistributedWorkQueue;
import org.apache.zookeeper.KeeperException;
@@ -35,15 +35,15 @@ import org.slf4j.LoggerFactory;
public class ReplicationWorker implements Runnable {
private static final Logger log = LoggerFactory.getLogger(ReplicationWorker.class);
- private ClientContext context;
+ private ServerContext context;
private AccumuloConfiguration conf;
private VolumeManager fs;
private ThreadPoolExecutor executor;
- public ReplicationWorker(ClientContext clientCtx, VolumeManager fs) {
- this.context = clientCtx;
+ public ReplicationWorker(ServerContext context, VolumeManager fs) {
+ this.context = context;
this.fs = fs;
- this.conf = clientCtx.getConfiguration();
+ this.conf = context.getConfiguration();
}
public void setExecutor(ThreadPoolExecutor executor) {
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/BulkImportCacheCleaner.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/BulkImportCacheCleaner.java
index 9f8de0c..68444cd 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/BulkImportCacheCleaner.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/BulkImportCacheCleaner.java
@@ -44,8 +44,8 @@ public class BulkImportCacheCleaner implements Runnable {
}
try {
// get the current transactions from ZooKeeper
- final Set<Long> allTransactionsAlive = ZooArbitrator
- .allTransactionsAlive(Constants.BULK_ARBITRATOR_TYPE);
+ final Set<Long> allTransactionsAlive = ZooArbitrator.allTransactionsAlive(server.getContext(),
+ Constants.BULK_ARBITRATOR_TYPE);
// remove any that are still alive
tids.removeAll(allTransactionsAlive);
// cleanup any memory of these transactions
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 5d1f4fd..98ce1f6 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -274,8 +274,8 @@ public class Tablet implements TabletCommitter {
FileRef getNextMapFilename(String prefix) throws IOException {
String extension = FileOperations.getNewFileExtension(tableConfiguration);
checkTabletDir();
- return new FileRef(location + "/" + prefix + UniqueNameAllocator.getInstance().getNextName()
- + "." + extension);
+ return new FileRef(
+ location + "/" + prefix + context.getUniqueNameAllocator().getNextName() + "." + extension);
}
private void checkTabletDir() throws IOException {
@@ -2298,7 +2298,7 @@ public class Tablet implements TabletCommitter {
KeyExtent low = new KeyExtent(extent.getTableId(), midRow, extent.getPrevEndRow());
KeyExtent high = new KeyExtent(extent.getTableId(), extent.getEndRow(), midRow);
- String lowDirectory = createTabletDirectory(getTabletServer().getFileSystem(),
+ String lowDirectory = createTabletDirectory(context, getTabletServer().getFileSystem(),
extent.getTableId(), midRow);
// write new tablet information to MetadataTable
@@ -2842,10 +2842,11 @@ public class Tablet implements TabletCommitter {
return scannedCount;
}
- private static String createTabletDirectory(VolumeManager fs, Table.ID tableId, Text endRow) {
+ private static String createTabletDirectory(ServerContext context, VolumeManager fs,
+ Table.ID tableId, Text endRow) {
String lowDirectory;
- UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
+ UniqueNameAllocator namer = context.getUniqueNameAllocator();
VolumeChooserEnvironment chooserEnv = new VolumeChooserEnvironment(tableId);
String volume = fs.choose(chooserEnv, ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR
+ Path.SEPARATOR;
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletData.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletData.java
index 7774875..f7a01f8 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletData.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/TabletData.java
@@ -49,6 +49,7 @@ import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.Sc
import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection.ServerColumnFamily;
import org.apache.accumulo.core.tabletserver.log.LogEntry;
import org.apache.accumulo.fate.zookeeper.ZooReader;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.FileRef;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.fs.VolumeUtil;
@@ -68,6 +69,7 @@ import org.slf4j.LoggerFactory;
public class TabletData {
private static Logger log = LoggerFactory.getLogger(TabletData.class);
+ private ServerContext context;
private String time = null;
private SortedMap<FileRef,DataFileValue> dataFiles = new TreeMap<>();
private List<LogEntry> logEntries = new ArrayList<>();
@@ -80,7 +82,9 @@ public class TabletData {
private String directory = null;
// Read tablet data from metadata tables
- public TabletData(KeyExtent extent, VolumeManager fs, Iterator<Entry<Key,Value>> entries) {
+ public TabletData(ServerContext context, KeyExtent extent, VolumeManager fs,
+ Iterator<Entry<Key,Value>> entries) {
+ this.context = context;
final Text family = new Text();
Text rowName = extent.getMetadataEntry();
while (entries.hasNext()) {
@@ -132,9 +136,11 @@ public class TabletData {
}
// Read basic root table metadata from zookeeper
- public TabletData(VolumeManager fs, ZooReader rdr, AccumuloConfiguration conf)
- throws IOException {
- directory = VolumeUtil.switchRootTableVolume(MetadataTableUtil.getRootTabletDir());
+ public TabletData(ServerContext context, VolumeManager fs, ZooReader rdr,
+ AccumuloConfiguration conf) throws IOException {
+ this.context = context;
+ directory = VolumeUtil.switchRootTableVolume(context,
+ MetadataTableUtil.getRootTabletDir(context));
Path location = new Path(directory);
@@ -166,7 +172,7 @@ public class TabletData {
}
try {
- logEntries = MetadataTableUtil.getLogEntries(null, RootTable.EXTENT);
+ logEntries = MetadataTableUtil.getLogEntries(context, RootTable.EXTENT);
} catch (Exception ex) {
throw new RuntimeException("Unable to read tablet log entries", ex);
}
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
index e1b38e2..e1adbd9 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/replication/ReplicationProcessorTest.java
@@ -21,11 +21,11 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import java.util.HashMap;
import java.util.Map;
-import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.core.client.impl.Table;
import org.apache.accumulo.core.conf.ConfigurationCopy;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.replication.ReplicationTarget;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.replication.DistributedWorkQueueWorkAssignerHelper;
import org.apache.accumulo.server.replication.ReplicaSystem;
@@ -41,7 +41,7 @@ public class ReplicationProcessorTest {
@Test
public void peerTypeExtractionFromConfiguration() {
VolumeManager fs = EasyMock.createMock(VolumeManager.class);
- ClientContext context = EasyMock.createMock(ClientContext.class);
+ ServerContext context = EasyMock.createMock(ServerContext.class);
Map<String,String> data = new HashMap<>();
@@ -58,7 +58,7 @@ public class ReplicationProcessorTest {
@Test(expected = IllegalArgumentException.class)
public void noPeerConfigurationThrowsAnException() {
VolumeManager fs = EasyMock.createMock(VolumeManager.class);
- ClientContext context = EasyMock.createMock(ClientContext.class);
+ ServerContext context = EasyMock.createMock(ServerContext.class);
Map<String,String> data = new HashMap<>();
ConfigurationCopy conf = new ConfigurationCopy(data);
diff --git a/shell/src/main/java/org/apache/accumulo/shell/commands/ListBulkCommand.java b/shell/src/main/java/org/apache/accumulo/shell/commands/ListBulkCommand.java
index 3a1f16c..e62b078 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ListBulkCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ListBulkCommand.java
@@ -52,7 +52,7 @@ public class ListBulkCommand extends Command {
MasterMonitorInfo stats;
MasterClientService.Iface client = null;
- ServerContext context = new ServerContext(shellState.getContext());
+ ServerContext context = ServerContext.getInstance(shellState.getContext().getClientInfo());
while (true) {
try {
client = MasterClient.getConnectionWithRetry(context);
diff --git a/test/src/main/java/org/apache/accumulo/harness/AccumuloClusterHarness.java b/test/src/main/java/org/apache/accumulo/harness/AccumuloClusterHarness.java
index 67e6ea9..d44b372 100644
--- a/test/src/main/java/org/apache/accumulo/harness/AccumuloClusterHarness.java
+++ b/test/src/main/java/org/apache/accumulo/harness/AccumuloClusterHarness.java
@@ -41,6 +41,7 @@ import org.apache.accumulo.harness.conf.AccumuloClusterConfiguration;
import org.apache.accumulo.harness.conf.AccumuloClusterPropertyConfiguration;
import org.apache.accumulo.harness.conf.StandaloneAccumuloClusterConfiguration;
import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.test.categories.StandaloneCapableClusterTests;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
@@ -276,6 +277,10 @@ public abstract class AccumuloClusterHarness extends AccumuloITBase
return new ClientContext(getClientInfo());
}
+ public static ServerContext getServerContext() {
+ return getCluster().getServerContext();
+ }
+
public static boolean saslEnabled() {
if (initialized) {
return getClientInfo().saslEnabled();
diff --git a/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java b/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
index 0dc53ef..74ad75c 100644
--- a/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
@@ -17,7 +17,6 @@
package org.apache.accumulo.test;
-import org.apache.accumulo.core.client.impl.ClientContext;
import org.apache.accumulo.core.client.impl.Table;
import org.apache.accumulo.core.client.impl.Writer;
import org.apache.accumulo.core.data.Mutation;
@@ -26,6 +25,7 @@ import org.apache.accumulo.core.metadata.MetadataTable;
import org.apache.accumulo.core.security.TablePermission;
import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
import org.apache.accumulo.harness.AccumuloClusterHarness;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.util.MetadataTableUtil;
import org.junit.Test;
@@ -43,7 +43,7 @@ public class MetaConstraintRetryIT extends AccumuloClusterHarness {
getConnector().securityOperations().grantTablePermission(getAdminPrincipal(),
MetadataTable.NAME, TablePermission.WRITE);
- ClientContext context = getClientContext();
+ ServerContext context = getServerContext();
Writer w = new Writer(context, MetadataTable.ID);
KeyExtent extent = new KeyExtent(Table.ID.of("5"), null, null);
@@ -52,7 +52,7 @@ public class MetaConstraintRetryIT extends AccumuloClusterHarness {
m.put("badcolfam", "badcolqual", "3");
try {
- MetadataTableUtil.update(w, null, m);
+ MetadataTableUtil.update(context, w, null, m);
} catch (RuntimeException e) {
if (e.getCause().getClass().equals(ConstraintViolationException.class)) {
throw (ConstraintViolationException) e.getCause();
diff --git a/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java b/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
index 16a9d9c..d21eb73 100644
--- a/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
+++ b/test/src/main/java/org/apache/accumulo/test/QueryMetadataTable.java
@@ -30,7 +30,6 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
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.security.tokens.AuthenticationToken;
import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Range;
import org.apache.accumulo.core.data.Value;
@@ -38,7 +37,6 @@ import org.apache.accumulo.core.data.impl.KeyExtent;
import org.apache.accumulo.core.metadata.MetadataTable;
import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.cli.ClientOpts;
import org.apache.hadoop.io.Text;
import org.slf4j.Logger;
@@ -49,15 +47,15 @@ import com.beust.jcommander.Parameter;
public class QueryMetadataTable {
private static final Logger log = LoggerFactory.getLogger(QueryMetadataTable.class);
- private static String principal;
- private static AuthenticationToken token;
-
static String location;
static class MDTQuery implements Runnable {
+
+ private Connector conn;
private Text row;
- MDTQuery(Text row) {
+ MDTQuery(Connector conn, Text row) {
+ this.conn = conn;
this.row = row;
}
@@ -67,8 +65,7 @@ public class QueryMetadataTable {
try {
KeyExtent extent = new KeyExtent(row, (Text) null);
- Connector connector = ServerContext.getInstance().getConnector(principal, token);
- mdScanner = connector.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
+ mdScanner = conn.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
Text row = extent.getMetadataEntry();
mdScanner.setRange(new Range(row));
@@ -81,12 +78,6 @@ public class QueryMetadataTable {
} catch (TableNotFoundException e) {
log.error("Table '" + MetadataTable.NAME + "' not found.", e);
throw new RuntimeException(e);
- } catch (AccumuloException e) {
- log.error("AccumuloException encountered.", e);
- throw new RuntimeException(e);
- } catch (AccumuloSecurityException e) {
- log.error("AccumuloSecurityException encountered.", e);
- throw new RuntimeException(e);
} finally {
if (mdScanner != null) {
mdScanner.close();
@@ -146,7 +137,7 @@ public class QueryMetadataTable {
for (int i = 0; i < opts.numQueries; i++) {
int index = r.nextInt(rows.size());
- MDTQuery mdtq = new MDTQuery(rows.get(index));
+ MDTQuery mdtq = new MDTQuery(connector, rows.get(index));
tp.submit(mdtq);
}
diff --git a/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java b/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
index 225f3d8..1898e98 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
@@ -77,8 +77,7 @@ public class SplitRecoveryIT extends ConfigurableMacBase {
prevEndRow == null ? null : new Text(prevEndRow));
}
- private void run() throws Exception {
- ServerContext c = ServerContext.getInstance();
+ private void run(ServerContext c) throws Exception {
String zPath = c.getZooKeeperRoot() + "/testLock";
IZooReaderWriter zoo = ZooReaderWriter.getInstance();
zoo.putPersistentData(zPath, new byte[0], NodeExistsPolicy.OVERWRITE);
@@ -150,7 +149,7 @@ public class SplitRecoveryIT extends ConfigurableMacBase {
splitMapFiles = mapFiles;
}
int tid = 0;
- TransactionWatcher.ZooArbitrator.start(Constants.BULK_ARBITRATOR_TYPE, tid);
+ TransactionWatcher.ZooArbitrator.start(context, Constants.BULK_ARBITRATOR_TYPE, tid);
MetadataTableUtil.updateTabletDataFile(tid, extent, mapFiles, "L0", context, zl);
}
@@ -286,7 +285,7 @@ public class SplitRecoveryIT extends ConfigurableMacBase {
}
public static void main(String[] args) throws Exception {
- new SplitRecoveryIT().run();
+ new SplitRecoveryIT().run(ServerContext.getInstance());
}
@Test
diff --git a/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java b/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
index c629321..63eea7f 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
@@ -100,7 +100,7 @@ public class ZombieTServer {
Random random = new Random(System.currentTimeMillis() % 1000);
int port = random.nextInt(30000) + 2000;
ServerContext context = ServerContext.getInstance();
- TransactionWatcher watcher = new TransactionWatcher();
+ TransactionWatcher watcher = new TransactionWatcher(context);
final ThriftClientHandler tch = new ThriftClientHandler(context, watcher);
Processor<Iface> processor = new Processor<>(tch);
ServerAddress serverPort = TServerUtils.startTServer(context.getConfiguration(),
diff --git a/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java b/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java
index d8ba869..7bd4c37 100644
--- a/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java
+++ b/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java
@@ -309,8 +309,8 @@ public class NullTserver {
// modify metadata
int zkTimeOut = (int) DefaultConfiguration.getInstance()
.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT);
- ServerContext context = new ServerContext(opts.iname, opts.keepers, zkTimeOut);
- TransactionWatcher watcher = new TransactionWatcher();
+ ServerContext context = ServerContext.getInstance(opts.iname, opts.keepers, zkTimeOut);
+ TransactionWatcher watcher = new TransactionWatcher(context);
ThriftClientHandler tch = new ThriftClientHandler(context, watcher);
Processor<Iface> processor = new Processor<>(tch);
TServerUtils.startTServer(context.getConfiguration(), ThriftServerType.CUSTOM_HS_HA, processor,
diff --git a/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java b/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
index dd8a6d0..ea09a15 100644
--- a/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
+++ b/test/src/main/java/org/apache/accumulo/test/performance/scan/CollectTabletStats.java
@@ -106,8 +106,8 @@ public class CollectTabletStats {
columnsTmp = opts.columns.split(",");
final String columns[] = columnsTmp;
- final VolumeManager fs = VolumeManagerImpl.get();
ServerContext context = opts.getServerContext();
+ final VolumeManager fs = context.getVolumeManager();
ServerConfigurationFactory sconf = context.getServerConfFactory();
Table.ID tableId = Tables.getTableId(context, opts.getTableName());
@@ -391,7 +391,7 @@ public class CollectTabletStats {
return tabletsToTest;
}
- private static List<FileRef> getTabletFiles(ClientContext context, KeyExtent ke)
+ private static List<FileRef> getTabletFiles(ServerContext context, KeyExtent ke)
throws IOException {
return new ArrayList<>(MetadataTableUtil.getDataFileSizes(ke, context).keySet());
}
diff --git a/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java b/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java
index 1bc9f20..dbdab12 100644
--- a/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java
+++ b/test/src/main/java/org/apache/accumulo/test/replication/MockReplicaSystem.java
@@ -21,6 +21,7 @@ import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.protobuf.ProtobufUtil;
import org.apache.accumulo.core.replication.ReplicationTarget;
+import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.replication.ReplicaSystem;
import org.apache.accumulo.server.replication.ReplicaSystemHelper;
import org.apache.accumulo.server.replication.proto.Replication.Status;
@@ -85,7 +86,7 @@ public class MockReplicaSystem implements ReplicaSystem {
}
@Override
- public void configure(String configuration) {
+ public void configure(ServerContext context, String configuration) {
if (StringUtils.isBlank(configuration)) {
log.debug("No configuration, using default sleep of {}", sleep);
return;