Updated Branches: refs/heads/ACCUMULO-1833-caching 0be6f0a79 -> 29efac97c
ACCUMULO-1833 Remove Connector client methods, but leave constructor on MTBW in place for testing purposes. Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/c8e607fe Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/c8e607fe Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/c8e607fe Branch: refs/heads/ACCUMULO-1833-caching Commit: c8e607fe381242492fc7e8c84b4fb0f1e000d3aa Parents: 0be6f0a Author: Josh Elser <josh.el...@gmail.com> Authored: Fri Nov 8 10:55:01 2013 -0500 Committer: Josh Elser <josh.el...@gmail.com> Committed: Fri Nov 8 10:56:24 2013 -0500 ---------------------------------------------------------------------- .../apache/accumulo/core/client/Connector.java | 44 +------------------ .../core/client/impl/ConnectorImpl.java | 12 ----- .../client/impl/MultiTableBatchWriterImpl.java | 4 +- .../core/client/mock/MockConnector.java | 11 ----- .../test/MultiTableBatchWriterTest.java | 46 ++++++++++++-------- 5 files changed, 31 insertions(+), 86 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/c8e607fe/core/src/main/java/org/apache/accumulo/core/client/Connector.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/client/Connector.java b/core/src/main/java/org/apache/accumulo/core/client/Connector.java index 68dc881..d2e7321 100644 --- a/core/src/main/java/org/apache/accumulo/core/client/Connector.java +++ b/core/src/main/java/org/apache/accumulo/core/client/Connector.java @@ -16,8 +16,6 @@ */ package org.apache.accumulo.core.client; -import java.util.concurrent.TimeUnit; - import org.apache.accumulo.core.client.admin.InstanceOperations; import org.apache.accumulo.core.client.admin.SecurityOperations; import org.apache.accumulo.core.client.admin.TableOperations; @@ -148,32 +146,8 @@ public abstract class Connector { public abstract MultiTableBatchWriter createMultiTableBatchWriter(long maxMemory, long maxLatency, int maxWriteThreads); /** - * Factory method to create a Multi-Table BatchWriter connected to Accumulo. Multi-table batch writers can queue data for multiple tables, which is good for - * ingesting data into multiple tables from the same source. Caching of ZooKeeper table information defaults to {@link MultiTableBatchWriterImpl#DEFAULT_CACHE_TIME} - * and {@link MultiTableBatchWriterImpl#DEFAULT_CACHE_TIME_UNIT} - * - * @param maxMemory - * size in bytes of the maximum memory to batch before writing - * @param maxLatency - * size in milliseconds; set to 0 or Long.MAX_VALUE to allow the maximum time to hold a batch before writing - * @param maxWriteThreads - * the maximum number of threads to use for writing data to the tablet servers - * @param cacheTime - * Duration of time to cache ZooKeeper table information - * @param cacheTimeUnit - * Unit of time to apply to {@link cacheTime} - * - * @return MultiTableBatchWriter object for configuring and writing data to - * @deprecated since 1.5.0; Use {@link #createMultiTableBatchWriter(BatchWriterConfig)} instead. - * @since 1.5.1 - */ - @Deprecated - public abstract MultiTableBatchWriter createMultiTableBatchWriter(long maxMemory, long maxLatency, int maxWriteThreads, long cacheTime, TimeUnit cacheTimeUnit); - - /** * Factory method to create a Multi-Table BatchWriter connected to Accumulo. Multi-table batch writers can queue data for multiple tables. Also data for - * multiple tables can be sent to a server in a single batch. Its an efficient way to ingest data into multiple tables from a single process. Caching - * of ZooKeeper table information defaults to {@link MultiTableBatchWriterImpl#DEFAULT_CACHE_TIME} and {@link MultiTableBatchWriterImpl#DEFAULT_CACHE_TIME_UNIT} + * multiple tables can be sent to a server in a single batch. Its an efficient way to ingest data into multiple tables from a single process. * * @param config * configuration used to create multi-table batch writer @@ -184,22 +158,6 @@ public abstract class Connector { public abstract MultiTableBatchWriter createMultiTableBatchWriter(BatchWriterConfig config); /** - * Factory method to create a Multi-Table BatchWriter connected to Accumulo. Multi-table batch writers can queue data for multiple tables. Also data for - * multiple tables can be sent to a server in a single batch. Its an efficient way to ingest data into multiple tables from a single process. This method - * also allows the user to provide parameters as to how long table information from ZooKeeper is cached. - * @param config - * configuration used to create the multi-table batch writer - * @param cacheTime - * Duration of time to cache ZooKeeper table information - * @param cacheTimeUnit - * Unit of time to apply to {@link cacheTime} - * @return - * @since 1.5.1 - */ - public abstract MultiTableBatchWriter createMultiTableBatchWriter(BatchWriterConfig config, long cacheTime, TimeUnit cacheTimeUnit); - - - /** * Factory method to create a Scanner connected to Accumulo. * * @param tableName http://git-wip-us.apache.org/repos/asf/accumulo/blob/c8e607fe/core/src/main/java/org/apache/accumulo/core/client/impl/ConnectorImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ConnectorImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ConnectorImpl.java index 89d2813..1702082 100644 --- a/core/src/main/java/org/apache/accumulo/core/client/impl/ConnectorImpl.java +++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ConnectorImpl.java @@ -126,24 +126,12 @@ public class ConnectorImpl extends Connector { .setMaxLatency(maxLatency, TimeUnit.MILLISECONDS).setMaxWriteThreads(maxWriteThreads)); } - @Deprecated - @Override - public MultiTableBatchWriter createMultiTableBatchWriter(long maxMemory, long maxLatency, int maxWriteThreads, long cacheTime, TimeUnit cacheTimeUnit) { - return new MultiTableBatchWriterImpl(instance, credentials, new BatchWriterConfig().setMaxMemory(maxMemory) - .setMaxLatency(maxLatency, TimeUnit.MILLISECONDS).setMaxWriteThreads(maxWriteThreads), cacheTime, cacheTimeUnit); - } - @Override public MultiTableBatchWriter createMultiTableBatchWriter(BatchWriterConfig config) { return new MultiTableBatchWriterImpl(instance, credentials, config); } @Override - public MultiTableBatchWriter createMultiTableBatchWriter(BatchWriterConfig config, long timeToCache, TimeUnit timeUnit) { - return new MultiTableBatchWriterImpl(instance, credentials, config, timeToCache, timeUnit); - } - - @Override public Scanner createScanner(String tableName, Authorizations authorizations) throws TableNotFoundException { ArgumentChecker.notNull(tableName, authorizations); return new ScannerImpl(instance, credentials, getTableId(tableName), authorizations); http://git-wip-us.apache.org/repos/asf/accumulo/blob/c8e607fe/core/src/main/java/org/apache/accumulo/core/client/impl/MultiTableBatchWriterImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/MultiTableBatchWriterImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/MultiTableBatchWriterImpl.java index d292379..34318d1 100644 --- a/core/src/main/java/org/apache/accumulo/core/client/impl/MultiTableBatchWriterImpl.java +++ b/core/src/main/java/org/apache/accumulo/core/client/impl/MultiTableBatchWriterImpl.java @@ -41,8 +41,8 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; public class MultiTableBatchWriterImpl implements MultiTableBatchWriter { - public static final long DEFAULT_CACHE_TIME = 60; - public static final TimeUnit DEFAULT_CACHE_TIME_UNIT = TimeUnit.SECONDS; + public static final long DEFAULT_CACHE_TIME = 200; + public static final TimeUnit DEFAULT_CACHE_TIME_UNIT = TimeUnit.MILLISECONDS; static final Logger log = Logger.getLogger(MultiTableBatchWriterImpl.class); private AtomicBoolean closed; http://git-wip-us.apache.org/repos/asf/accumulo/blob/c8e607fe/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java b/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java index 2aa6291..1179559 100644 --- a/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java +++ b/core/src/main/java/org/apache/accumulo/core/client/mock/MockConnector.java @@ -90,23 +90,12 @@ public class MockConnector extends Connector { return new MockMultiTableBatchWriter(acu); } - @Deprecated - @Override - public MultiTableBatchWriter createMultiTableBatchWriter(long maxMemory, long maxLatency, int maxWriteThreads, long cacheTime, TimeUnit cacheTimeUnit) { - return new MockMultiTableBatchWriter(acu); - } - @Override public MultiTableBatchWriter createMultiTableBatchWriter(BatchWriterConfig config) { return createMultiTableBatchWriter(config.getMaxMemory(), config.getMaxLatency(TimeUnit.MILLISECONDS), config.getMaxWriteThreads()); } @Override - public MultiTableBatchWriter createMultiTableBatchWriter(BatchWriterConfig config, long cacheTime, TimeUnit cacheTimeUnit) { - return createMultiTableBatchWriter(config.getMaxMemory(), config.getMaxLatency(TimeUnit.MILLISECONDS), config.getMaxWriteThreads(), cacheTime, cacheTimeUnit); - } - - @Override public Scanner createScanner(String tableName, Authorizations authorizations) throws TableNotFoundException { MockTable table = acu.tables.get(tableName); if (table == null) http://git-wip-us.apache.org/repos/asf/accumulo/blob/c8e607fe/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterTest.java ---------------------------------------------------------------------- diff --git a/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterTest.java b/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterTest.java index 2cb78ed..8ed6931 100644 --- a/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterTest.java +++ b/test/src/test/java/org/apache/accumulo/test/MultiTableBatchWriterTest.java @@ -32,12 +32,15 @@ import org.apache.accumulo.core.client.TableNotFoundException; import org.apache.accumulo.core.client.TableOfflineException; import org.apache.accumulo.core.client.ZooKeeperInstance; import org.apache.accumulo.core.client.admin.TableOperations; +import org.apache.accumulo.core.client.impl.MultiTableBatchWriterImpl; import org.apache.accumulo.core.client.security.tokens.PasswordToken; import org.apache.accumulo.core.data.Key; import org.apache.accumulo.core.data.Mutation; import org.apache.accumulo.core.data.Range; import org.apache.accumulo.core.data.Value; import org.apache.accumulo.core.security.Authorizations; +import org.apache.accumulo.core.security.CredentialHelper; +import org.apache.accumulo.core.security.thrift.TCredentials; import org.apache.accumulo.minicluster.MiniAccumuloCluster; import org.apache.accumulo.minicluster.MiniAccumuloConfig; import org.junit.AfterClass; @@ -52,12 +55,12 @@ import com.google.common.util.concurrent.UncheckedExecutionException; public class MultiTableBatchWriterTest { public static TemporaryFolder folder = new TemporaryFolder(); public static MiniAccumuloCluster cluster; - private static final String password = "secret"; + private static final PasswordToken password = new PasswordToken("secret"); @BeforeClass public static void setUpBeforeClass() throws Exception { folder.create(); - MiniAccumuloConfig cfg = new MiniAccumuloConfig(folder.newFolder("miniAccumulo"), password); + MiniAccumuloConfig cfg = new MiniAccumuloConfig(folder.newFolder("miniAccumulo"), new String(password.getPassword())); cluster = new MiniAccumuloCluster(cfg); cluster.start(); } @@ -71,11 +74,12 @@ public class MultiTableBatchWriterTest { @Test public void testTableRenameSameWriters() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 60, TimeUnit.SECONDS); + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 60, TimeUnit.SECONDS); try { final String table1 = "testTableRenameSameWriters_table1", table2 = "testTableRenameSameWriters_table2"; @@ -132,11 +136,12 @@ public class MultiTableBatchWriterTest { @Test public void testTableRenameNewWriters() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 60, TimeUnit.MINUTES); + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 60, TimeUnit.SECONDS); try { final String table1 = "testTableRenameNewWriters_table1", table2 = "testTableRenameNewWriters_table2"; @@ -197,11 +202,12 @@ public class MultiTableBatchWriterTest { @Test public void testTableRenameNewWritersNoCaching() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 0, TimeUnit.SECONDS); + + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 0, TimeUnit.SECONDS); try { final String table1 = "testTableRenameNewWritersNoCaching_table1", table2 = "testTableRenameNewWritersNoCaching_table2"; @@ -245,11 +251,12 @@ public class MultiTableBatchWriterTest { @Test public void testTableDelete() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 60, TimeUnit.MINUTES); + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 60, TimeUnit.SECONDS); try { final String table1 = "testTableDelete_table1", table2 = "testTableDelete_table2"; @@ -294,11 +301,12 @@ public class MultiTableBatchWriterTest { public void testOfflineTable() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 60, TimeUnit.MINUTES); + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 60, TimeUnit.SECONDS); try { final String table1 = "testOfflineTable_table1", table2 = "testOfflineTable_table2"; @@ -344,11 +352,12 @@ public class MultiTableBatchWriterTest { public void testOfflineTableWithCache() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 60, TimeUnit.MINUTES); + + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 60, TimeUnit.SECONDS); try { final String table1 = "testOfflineTableWithCache_table1", table2 = "testOfflineTableWithCache_table2"; @@ -396,11 +405,12 @@ public class MultiTableBatchWriterTest { public void testOfflineTableWithoutCache() throws Exception { ZooKeeperInstance instance = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()); - Connector connector = instance.getConnector("root", new PasswordToken(password)); + Connector connector = instance.getConnector("root", password); BatchWriterConfig config = new BatchWriterConfig(); - MultiTableBatchWriter mtbw = connector.createMultiTableBatchWriter(config, 0, TimeUnit.MINUTES); + TCredentials creds = CredentialHelper.create("root", password, instance.getInstanceID()); + MultiTableBatchWriter mtbw = new MultiTableBatchWriterImpl(instance, creds, config, 0, TimeUnit.SECONDS); try { final String table1 = "testOfflineTableWithoutCache_table1", table2 = "testOfflineTableWithoutCache_table2";