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/11/02 20:45:03 UTC
[accumulo] branch master updated: Fixes #533 - Create scanners with
default user auths (#744)
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 18e3266 Fixes #533 - Create scanners with default user auths (#744)
18e3266 is described below
commit 18e32663d9ecbf04f6f2aa57b2400a403ce2ed62
Author: Mike Walch <mw...@apache.org>
AuthorDate: Fri Nov 2 16:44:57 2018 -0400
Fixes #533 - Create scanners with default user auths (#744)
---
.../accumulo/core/client/AccumuloClient.java | 28 ++++++++++
.../core/client/impl/AccumuloClientImpl.java | 14 +++++
.../accumulo/core/client/impl/ClientContext.java | 21 +++++++-
.../core/client/impl/ClientInfoFactory.java | 59 ----------------------
.../accumulo/core/client/impl/ClientInfoImpl.java | 4 +-
.../accumulo/test/functional/AccumuloClientIT.java | 6 +--
6 files changed, 66 insertions(+), 66 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/client/AccumuloClient.java b/core/src/main/java/org/apache/accumulo/core/client/AccumuloClient.java
index e7f6a4b..359419c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/AccumuloClient.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/AccumuloClient.java
@@ -100,6 +100,20 @@ public interface AccumuloClient extends AutoCloseable {
throws TableNotFoundException;
/**
+ * Factory method to create a BatchScanner with all of user's authorizations and the number of
+ * query threads configured when AccumuloClient was created. If no query threads were configured,
+ * defaults will be used.
+ *
+ * @param tableName
+ * the name of the table to query
+ *
+ * @return BatchScanner object for configuring and querying
+ * @throws TableNotFoundException
+ * when the specified table doesn't exist
+ */
+ BatchScanner createBatchScanner(String tableName) throws TableNotFoundException, AccumuloSecurityException, AccumuloException;
+
+ /**
* Factory method to create BatchDeleter
*
* @param tableName
@@ -212,6 +226,20 @@ public interface AccumuloClient extends AutoCloseable {
throws TableNotFoundException;
/**
+ * Factory method to create a Scanner with all of the user's authorizations.
+ *
+ * @param tableName
+ * the name of the table to query data from
+ *
+ * @return Scanner object for configuring and querying data with
+ * @throws TableNotFoundException
+ * when the specified table doesn't exist
+ *
+ * @see IsolatedScanner
+ */
+ Scanner createScanner(String tableName) throws TableNotFoundException, AccumuloSecurityException, AccumuloException;
+
+ /**
* Factory method to create a ConditionalWriter connected to Accumulo.
*
* @param tableName
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/AccumuloClientImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/AccumuloClientImpl.java
index 8a6ce3e..eaf0d8d 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/AccumuloClientImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/AccumuloClientImpl.java
@@ -126,6 +126,13 @@ public class AccumuloClientImpl implements AccumuloClient {
}
@Override
+ public BatchScanner createBatchScanner(String tableName) throws TableNotFoundException,
+ AccumuloSecurityException, AccumuloException {
+ Authorizations auths = securityOperations().getUserAuthorizations(context.getPrincipal());
+ return createBatchScanner(tableName, auths);
+ }
+
+ @Override
public BatchDeleter createBatchDeleter(String tableName, Authorizations authorizations,
int numQueryThreads, BatchWriterConfig config) throws TableNotFoundException {
checkArgument(tableName != null, "tableName is null");
@@ -194,6 +201,13 @@ public class AccumuloClientImpl implements AccumuloClient {
}
@Override
+ public Scanner createScanner(String tableName) throws TableNotFoundException,
+ AccumuloSecurityException, AccumuloException {
+ Authorizations auths = securityOperations().getUserAuthorizations(context.getPrincipal());
+ return createScanner(tableName, auths);
+ }
+
+ @Override
public String whoami() {
ensureOpen();
return context.getCredentials().getPrincipal();
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
index cd18f50..3c63cda 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientContext.java
@@ -31,8 +31,10 @@ import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.BatchWriterConfig;
import org.apache.accumulo.core.client.ClientInfo;
+import org.apache.accumulo.core.client.Durability;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
+import org.apache.accumulo.core.conf.ClientProperty;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.metadata.RootTable;
import org.apache.accumulo.core.rpc.SaslConnectionParams;
@@ -243,7 +245,24 @@ public class ClientContext {
public BatchWriterConfig getBatchWriterConfig() {
ensureOpen();
if (batchWriterConfig == null) {
- batchWriterConfig = ClientInfoFactory.getBatchWriterConfig(getClientInfo());
+ Properties props = info.getProperties();
+ batchWriterConfig = new BatchWriterConfig();
+ Long maxMemory = ClientProperty.BATCH_WRITER_MAX_MEMORY_BYTES.getLong(props);
+ if (maxMemory != null) {
+ batchWriterConfig.setMaxMemory(maxMemory);
+ }
+ Long maxLatency = ClientProperty.BATCH_WRITER_MAX_LATENCY_SEC.getLong(props);
+ if (maxLatency != null) {
+ batchWriterConfig.setMaxLatency(maxLatency, TimeUnit.SECONDS);
+ }
+ Long timeout = ClientProperty.BATCH_WRITER_MAX_TIMEOUT_SEC.getLong(props);
+ if (timeout != null) {
+ batchWriterConfig.setTimeout(timeout, TimeUnit.SECONDS);
+ }
+ String durability = ClientProperty.BATCH_WRITER_DURABILITY.getValue(props);
+ if (!durability.isEmpty()) {
+ batchWriterConfig.setDurability(Durability.valueOf(durability.toUpperCase()));
+ }
}
return batchWriterConfig;
}
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoFactory.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoFactory.java
deleted file mode 100644
index 9c40b03..0000000
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.core.client.impl;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.accumulo.core.client.BatchWriterConfig;
-import org.apache.accumulo.core.client.ClientInfo;
-import org.apache.accumulo.core.client.Durability;
-import org.apache.accumulo.core.conf.ClientProperty;
-
-/**
- * Creates internal objects using {@link ClientInfo}
- */
-public class ClientInfoFactory {
-
- public static String getString(ClientInfo info, ClientProperty property) {
- return property.getValue(info.getProperties());
- }
-
- public static Long getLong(ClientInfo info, ClientProperty property) {
- return property.getLong(info.getProperties());
- }
-
- public static BatchWriterConfig getBatchWriterConfig(ClientInfo info) {
- BatchWriterConfig batchWriterConfig = new BatchWriterConfig();
- Long maxMemory = getLong(info, ClientProperty.BATCH_WRITER_MAX_MEMORY_BYTES);
- if (maxMemory != null) {
- batchWriterConfig.setMaxMemory(maxMemory);
- }
- Long maxLatency = getLong(info, ClientProperty.BATCH_WRITER_MAX_LATENCY_SEC);
- if (maxLatency != null) {
- batchWriterConfig.setMaxLatency(maxLatency, TimeUnit.SECONDS);
- }
- Long timeout = getLong(info, ClientProperty.BATCH_WRITER_MAX_TIMEOUT_SEC);
- if (timeout != null) {
- batchWriterConfig.setTimeout(timeout, TimeUnit.SECONDS);
- }
- String durability = getString(info, ClientProperty.BATCH_WRITER_DURABILITY);
- if (!durability.isEmpty()) {
- batchWriterConfig.setDurability(Durability.valueOf(durability.toUpperCase()));
- }
- return batchWriterConfig;
- }
-}
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoImpl.java
index ad9b001..ff4ccca 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ClientInfoImpl.java
@@ -70,9 +70,7 @@ public class ClientInfoImpl implements ClientInfo {
@Override
public Properties getProperties() {
Properties result = new Properties();
- properties.forEach((key, value) -> {
- result.setProperty((String) key, (String) value);
- });
+ properties.forEach((key, value) -> result.setProperty((String) key, (String) value));
return result;
}
diff --git a/test/src/main/java/org/apache/accumulo/test/functional/AccumuloClientIT.java b/test/src/main/java/org/apache/accumulo/test/functional/AccumuloClientIT.java
index 71d4820..487cdca 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/AccumuloClientIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/AccumuloClientIT.java
@@ -45,7 +45,7 @@ import com.google.common.collect.Iterables;
public class AccumuloClientIT extends AccumuloClusterHarness {
- private static interface CloseCheck {
+ private interface CloseCheck {
void check() throws Exception;
}
@@ -69,11 +69,11 @@ public class AccumuloClientIT extends AccumuloClusterHarness {
// this should cause the connector to stop functioning
client.close();
- expectClosed(() -> c.tableOperations());
+ expectClosed(c::tableOperations);
}
@Test
- public void testclientectorBuilder() throws Exception {
+ public void testAccumuloClientBuilder() throws Exception {
AccumuloClient c = getAccumuloClient();
String instanceName = c.info().getInstanceName();
String zookeepers = c.info().getZooKeepers();