public SharedResources(Environment env) throws TableNotFoundException {
this.env = env;
curator = CuratorUtil.newAppCurator(env.getConfiguration());
curator.start();
int numTservers = env.getAccumuloClient().instanceOperations().getTabletServers().size();
int numBWThreads = FluoConfigurationImpl.getNumBWThreads(env.getConfiguration(), numTservers);
bw = env.getAccumuloClient().createBatchWriter(env.getTable(),
new BatchWriterConfig().setMaxWriteThreads(numBWThreads));
sbw = new SharedBatchWriter(bw);
int numCWThreads = FluoConfigurationImpl.getNumCWThreads(env.getConfiguration(), numTservers);
cw = env.getAccumuloClient().createConditionalWriter(env.getTable(),
new ConditionalWriterConfig().setAuthorizations(env.getAuthorizations())
.setMaxWriteThreads(numCWThreads));
bulkCw = env.getAccumuloClient().createConditionalWriter(env.getTable(),
new ConditionalWriterConfig().setAuthorizations(env.getAuthorizations())
.setMaxWriteThreads(numCWThreads));
txInfoCache = new TxInfoCache(env);
visCache = new VisibilityCache(env.getConfiguration());
metricRegistry = new MetricRegistry();
int commitThreads = env.getConfiguration().getInt(FluoConfigurationImpl.ASYNC_COMMIT_THREADS,
FluoConfigurationImpl.ASYNC_COMMIT_THREADS_DEFAULT);
asyncCommitExecutor = FluoExecutors.newFixedThreadPool(commitThreads, "async-commits");
commitThreads = env.getConfiguration().getInt(FluoConfigurationImpl.SYNC_COMMIT_THREADS,
FluoConfigurationImpl.SYNC_COMMIT_THREADS_DEFAULT);
syncCommitExecutor = FluoExecutors.newFixedThreadPool(commitThreads, "sync-commits");
acw = new AsyncConditionalWriter(env, cw);
bulkAcw = new AsyncConditionalWriter(env, bulkCw);
}