You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by pu...@apache.org on 2017/05/05 16:02:59 UTC
incubator-rya git commit: RYA-254 Closes #143,
Added a factory method to the ProspectorServiceEvalStatsDAO to make
it more convenient to construct. This required moving some of the Accumulo
specific configuration parameters into the AccumuloRdfConfigurat
Repository: incubator-rya
Updated Branches:
refs/heads/master c941aea8b -> 4b755c64d
RYA-254 Closes #143, Added a factory method to the ProspectorServiceEvalStatsDAO to make it more convenient to construct. This required moving some of the Accumulo specific configuration parameters into the AccumuloRdfConfiguration object from ConfigUtils.
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/4b755c64
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/4b755c64
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/4b755c64
Branch: refs/heads/master
Commit: 4b755c64debdf9ca2e137eab7cdc1a2a890cdb69
Parents: c941aea
Author: Kevin Chilton <ke...@parsons.com>
Authored: Mon Mar 6 17:11:30 2017 -0500
Committer: pujav65 <pu...@gmail.com>
Committed: Fri May 5 11:37:54 2017 -0400
----------------------------------------------------------------------
.../rya/accumulo/AccumuloRdfConfiguration.java | 73 ++++++++++---
.../rya/accumulo/utils/ConnectorFactory.java | 74 +++++++++++++
.../rya/indexing/accumulo/ConfigUtils.java | 109 +++++++++++++------
.../accumulo/entity/EntityOptimizer.java | 5 +-
.../apache/rya/sail/config/RyaSailFactory.java | 7 +-
.../prospector/service/ProspectorService.java | 13 ++-
.../service/ProspectorServiceEvalStatsDAO.java | 24 +++-
7 files changed, 241 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/AccumuloRdfConfiguration.java
----------------------------------------------------------------------
diff --git a/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/AccumuloRdfConfiguration.java b/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/AccumuloRdfConfiguration.java
index d988b20..0200cf7 100644
--- a/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/AccumuloRdfConfiguration.java
+++ b/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/AccumuloRdfConfiguration.java
@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
+import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.IteratorSetting;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.hadoop.conf.Configuration;
@@ -34,25 +35,18 @@ import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
-
-/**
- * Created by IntelliJ IDEA.
- * Date: 4/25/12
- * Time: 3:24 PM
- * To change this template use File | Settings | File Templates.
- */
public class AccumuloRdfConfiguration extends RdfCloudTripleStoreConfiguration {
+ public static final String USE_MOCK_INSTANCE = ".useMockInstance";
public static final String CLOUDBASE_INSTANCE = "sc.cloudbase.instancename";
public static final String CLOUDBASE_ZOOKEEPERS = "sc.cloudbase.zookeepers";
public static final String CLOUDBASE_USER = "sc.cloudbase.username";
public static final String CLOUDBASE_PASSWORD = "sc.cloudbase.password";
- public static final String USE_MOCK_INSTANCE = ".useMockInstance";
-
+
public static final String MAXRANGES_SCANNER = "ac.query.maxranges";
-
+
public static final String CONF_ADDITIONAL_INDEXERS = "ac.additional.indexers";
-
+
public static final String CONF_FLUSH_EACH_UPDATE = "ac.dao.flush";
public static final String ITERATOR_SETTINGS_SIZE = "ac.iterators.size";
@@ -210,10 +204,61 @@ public class AccumuloRdfConfiguration extends RdfCloudTripleStoreConfiguration {
}
+ /**
+ * Indicates that a Mock instance of Accumulo is being used to back the Rya instance.
+ *
+ * @return {@code true} if the Rya instance is backed by a mock Accumulo; otherwise {@code false}.
+ */
+ public boolean useMockInstance() {
+ return super.getBoolean(USE_MOCK_INSTANCE, false);
+ }
+
+ /**
+ * Get the Accumulo username from the configuration object that is meant to
+ * be used when connecting a {@link Connector} to Accumulo.
+ *
+ * @return The username if one could be found; otherwise {@code null}.
+ */
+ public String getUsername() {
+ return super.get(CLOUDBASE_USER);
+ }
+
+ /**
+ * Get the Accumulo password from the configuration object that is meant to
+ * be used when connecting a {@link Connector} to Accumulo.
+ *
+ * @return The password if one could be found; otherwise an empty string.
+ */
+ public String getPassword() {
+ return super.get(CLOUDBASE_PASSWORD, "");
+ }
+
+ /**
+ * Get the Accumulo instance name from the configuration object that is
+ * meant to be used when connecting a {@link Connector} to Accumulo.
+ *
+ * @return The instance name if one could be found; otherwise {@code null}.
+ */
+ public String getInstanceName() {
+ return super.get(CLOUDBASE_INSTANCE);
+ }
+
+ /**
+ * Get a comma delimited list of the names of the Zookeeper servers from
+ * the configuration object that is meant to be used when connecting a
+ * {@link Connector} to Accumulo.
+ *
+ * @return The zookeepers list if one could be found; otherwise {@code null}.
+ */
+ public String getZookeepers() {
+ return super.get(CLOUDBASE_ZOOKEEPERS);
+ }
+
public Authorizations getAuthorizations() {
String[] auths = getAuths();
- if (auths == null || auths.length == 0)
+ if (auths == null || auths.length == 0) {
return AccumuloRdfConstants.ALL_AUTHORIZATIONS;
+ }
return new Authorizations(auths);
}
@@ -230,7 +275,7 @@ public class AccumuloRdfConfiguration extends RdfCloudTripleStoreConfiguration {
for (Class<? extends AccumuloIndexer> ai : indexers){
strs.add(ai.getName());
}
-
+
setStrings(CONF_ADDITIONAL_INDEXERS, strs.toArray(new String[]{}));
}
@@ -281,7 +326,7 @@ public class AccumuloRdfConfiguration extends RdfCloudTripleStoreConfiguration {
int priority = Integer.valueOf(this.get(String.format(ITERATOR_SETTINGS_PRIORITY, i)));
int optionsSize = Integer.valueOf(this.get(String.format(ITERATOR_SETTINGS_OPTIONS_SIZE, i)));
- Map<String, String> options = new HashMap<String, String>(optionsSize);
+ Map<String, String> options = new HashMap<>(optionsSize);
for(int j = 0; j < optionsSize; j++) {
String key = this.get(String.format(ITERATOR_SETTINGS_OPTIONS_KEY, i, j));
String value = this.get(String.format(ITERATOR_SETTINGS_OPTIONS_VALUE, i, j));
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/utils/ConnectorFactory.java
----------------------------------------------------------------------
diff --git a/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/utils/ConnectorFactory.java b/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/utils/ConnectorFactory.java
new file mode 100644
index 0000000..6fb3daa
--- /dev/null
+++ b/dao/accumulo.rya/src/main/java/org/apache/rya/accumulo/utils/ConnectorFactory.java
@@ -0,0 +1,74 @@
+/*
+ * 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.rya.accumulo.utils;
+
+import static java.util.Objects.requireNonNull;
+
+import org.apache.accumulo.core.client.AccumuloException;
+import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.Instance;
+import org.apache.accumulo.core.client.ZooKeeperInstance;
+import org.apache.accumulo.core.client.mock.MockInstance;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+
+import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
+import edu.umd.cs.findbugs.annotations.NonNull;
+
+/**
+ * A utility class that helps create instances of {@link Connector}.
+ */
+@DefaultAnnotation(NonNull.class)
+public class ConnectorFactory {
+
+ /**
+ * Private constructor to prevent instantiation.
+ */
+ private ConnectorFactory() { }
+
+ /**
+ * Create a {@link Connector} that connects to an Accumulo instance. The {@link AccumuloRdfConfiguration#USE_MOCK_INSTANCE}
+ * flag must be set if the configuration information needs to connect to a mock instance of Accumulo. If this is
+ * the case, then the Zookeepers information should not be set.
+ *
+ * @param config - The configuration that will be used to initialize the connector. (not null)
+ * @return The {@link Connector} that was created by {@code config}.
+ * @throws AccumuloException The connector couldn't be created because of an Accumulo problem.
+ * @throws AccumuloSecurityException The connector couldn't be created because of an Accumulo security violation.
+ */
+ public static Connector connect(AccumuloRdfConfiguration config) throws AccumuloException, AccumuloSecurityException {
+ requireNonNull(config);
+
+ // Wrap the configuration as the Accumulo configuration so that we may have access
+ // to Accumulo specific configuration values.
+ final AccumuloRdfConfiguration accConf = new AccumuloRdfConfiguration(config);
+
+ // Create the Mock or Zookeeper backed Instance depending on the configuration.
+ final Instance instance;
+ if(accConf.useMockInstance()) {
+ instance = new MockInstance(accConf.getInstanceName());
+ } else {
+ instance = new ZooKeeperInstance(accConf.getInstanceName(), accConf.getZookeepers());
+ }
+
+ // Return a connector using the configured username and password.
+ return instance.getConnector(accConf.getUsername(), new PasswordToken(accConf.getPassword()));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/ConfigUtils.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/ConfigUtils.java b/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/ConfigUtils.java
index 17438b1..41ae9ad 100644
--- a/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/ConfigUtils.java
+++ b/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/ConfigUtils.java
@@ -1,5 +1,3 @@
-package org.apache.rya.indexing.accumulo;
-
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,6 +16,7 @@ package org.apache.rya.indexing.accumulo;
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.rya.indexing.accumulo;
import static java.util.Objects.requireNonNull;
@@ -44,6 +43,7 @@ import org.apache.hadoop.mapreduce.JobContext;
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.log4j.Logger;
import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+import org.apache.rya.accumulo.utils.ConnectorFactory;
import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
import org.apache.rya.api.instance.RyaDetails;
import org.apache.rya.indexing.FilterFunctionOptimizer;
@@ -67,48 +67,45 @@ import com.google.common.base.Optional;
import com.google.common.collect.Lists;
/**
- * A set of configuration utils to read a Hadoop {@link Configuration} object
- * and create Cloudbase/Accumulo objects. Soon will deprecate this class. Use
- * installer for the set methods, use {@link RyaDetails} for the get methods.
- * New code must separate parameters that are set at Rya install time from that
- * which is specific to the client. Also Accumulo index tables are pushed down
- * to the implementation and not configured in conf.
+ * A set of configuration utils to read a Hadoop {@link Configuration} object and create Cloudbase/Accumulo objects.
+ * Soon will deprecate this class. Use installer for the set methods, use {@link RyaDetails} for the get methods.
+ * New code must separate parameters that are set at Rya install time from that which is specific to the client.
+ * Also Accumulo index tables are pushed down to the implementation and not configured in conf.
*/
public class ConfigUtils {
private static final Logger logger = Logger.getLogger(ConfigUtils.class);
/**
- * @Deprecated use {@link RdfCloudTripleStoreConfiguration#CONF_TBL_PREFIX}
- * instead
+ * @Deprecated use {@link RdfCloudTripleStoreConfiguration#CONF_TBL_PREFIX} instead.
*/
@Deprecated
public static final String CLOUDBASE_TBL_PREFIX = RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX;
+
/**
- * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_INSTANCE}
- * instead
+ * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_INSTANCE} instead.
*/
@Deprecated
public static final String CLOUDBASE_INSTANCE = AccumuloRdfConfiguration.CLOUDBASE_INSTANCE;
+
/**
- * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_ZOOKEEPERS}
- * instead
+ * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_ZOOKEEPERS} instead.
*/
@Deprecated
public static final String CLOUDBASE_ZOOKEEPERS = AccumuloRdfConfiguration.CLOUDBASE_ZOOKEEPERS;
+
/**
- * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_USER} instead
+ * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_USER} instead.
*/
@Deprecated
public static final String CLOUDBASE_USER = AccumuloRdfConfiguration.CLOUDBASE_USER;
+
/**
- * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_PASSWORD}
- * instead
+ * @Deprecated use {@link AccumuloRdfConfiguration#CLOUDBASE_PASSWORD} instead.
*/
@Deprecated
public static final String CLOUDBASE_PASSWORD = AccumuloRdfConfiguration.CLOUDBASE_PASSWORD;
/**
- * @Deprecated use {@link RdfCloudTripleStoreConfiguration#CONF_QUERY_AUTH}
- * instead
+ * @Deprecated use {@link RdfCloudTripleStoreConfiguration#CONF_QUERY_AUTH} instead.
*/
@Deprecated
public static final String CLOUDBASE_AUTHS = RdfCloudTripleStoreConfiguration.CONF_QUERY_AUTH;
@@ -233,7 +230,7 @@ public class ConfigUtils {
protected static Set<URI> getPredicates(final Configuration conf, final String confName) {
final String[] validPredicateStrings = conf.getStrings(confName, new String[] {});
- final Set<URI> predicates = new HashSet<URI>();
+ final Set<URI> predicates = new HashSet<>();
for (final String prediateString : validPredicateStrings) {
predicates.add(new URIImpl(prediateString));
}
@@ -300,8 +297,15 @@ public class ConfigUtils {
return getUsername(job.getConfiguration());
}
+ /**
+ * Get the Accumulo username from the configuration object that is meant to
+ * be used when connecting a {@link Connector} to Accumulo.
+ *
+ * @param conf - The configuration object that will be interrogated. (not null)
+ * @return The username if one could be found; otherwise {@code null}.
+ */
public static String getUsername(final Configuration conf) {
- return conf.get(CLOUDBASE_USER);
+ return new AccumuloRdfConfiguration(conf).getUsername();
}
public static Authorizations getAuthorizations(final JobContext job) {
@@ -320,33 +324,71 @@ public class ConfigUtils {
return getInstance(job.getConfiguration());
}
+ /**
+ * Create an {@link Instance} that may be used to create {@link Connector}s
+ * to Accumulo. If the configuration has the {@link #USE_MOCK_INSTANCE} flag
+ * set, then the instance will be be a {@link MockInstance} instead of a
+ * Zookeeper backed instance.
+ *
+ * @param conf - The configuration object that will be interrogated. (not null)
+ * @return The {@link Instance} that may be used to connect to Accumulo.
+ */
public static Instance getInstance(final Configuration conf) {
+ // Pull out the Accumulo specific configuration values.
+ final AccumuloRdfConfiguration accConf = new AccumuloRdfConfiguration(conf);
+ String instanceName = accConf.getInstanceName();
+ String zoookeepers = accConf.getZookeepers();
+
+ // Create an Instance a mock if the mock flag is set.
if (useMockInstance(conf)) {
- return new MockInstance(conf.get(CLOUDBASE_INSTANCE));
+ return new MockInstance(instanceName);
}
- return new ZooKeeperInstance(conf.get(CLOUDBASE_INSTANCE), conf.get(CLOUDBASE_ZOOKEEPERS));
+
+ // Otherwise create an Instance to a Zookeeper managed instance of Accumulo.
+ return new ZooKeeperInstance(instanceName, zoookeepers);
}
public static String getPassword(final JobContext job) {
return getPassword(job.getConfiguration());
}
+ /**
+ * Get the Accumulo password from the configuration object that is meant to
+ * be used when connecting a {@link Connector} to Accumulo.
+ *
+ * @param conf - The configuration object that will be interrogated. (not null)
+ * @return The password if one could be found; otherwise an empty string.
+ */
public static String getPassword(final Configuration conf) {
- return conf.get(CLOUDBASE_PASSWORD, "");
+ return new AccumuloRdfConfiguration(conf).getPassword();
}
public static Connector getConnector(final JobContext job) throws AccumuloException, AccumuloSecurityException {
return getConnector(job.getConfiguration());
}
+ /**
+ * Create an Accumulo {@link Connector} using the configured connection information.
+ * If the connection information points to a mock instance of Accumulo, then the
+ * {@link #USE_MOCK_INSTANCE} flag must be set.
+ *
+ * @param conf - Configures how the connector will be built. (not null)
+ * @return A {@link Connector} that may be used to interact with the configured Accumulo instance.
+ * @throws AccumuloException The connector couldn't be created because of an Accumulo problem.
+ * @throws AccumuloSecurityException The connector couldn't be created because of an Accumulo security violation.
+ */
public static Connector getConnector(final Configuration conf) throws AccumuloException, AccumuloSecurityException {
- final Instance instance = ConfigUtils.getInstance(conf);
-
- return instance.getConnector(getUsername(conf), getPassword(conf));
+ return ConnectorFactory.connect( new AccumuloRdfConfiguration(conf) );
}
+ /**
+ * Indicates that a Mock instance of Accumulo is being used to back the Rya instance.
+ *
+ * @param conf - The configuration object that will be interrogated. (not null)
+ * @return {@code true} if the Rya instance is backed by a mock Accumulo; otherwise {@code false}.
+ */
public static boolean useMockInstance(final Configuration conf) {
- return conf.getBoolean(USE_MOCK_INSTANCE, false);
+ return new AccumuloRdfConfiguration(conf).useMockInstance();
}
protected static int getNumPartitions(final Configuration conf) {
@@ -420,10 +462,9 @@ public class ConfigUtils {
useFilterIndex = true;
}
} else {
-
- if (getUsePCJ(conf) || getUseOptimalPCJ(conf)) {
- conf.setPcjOptimizer(PCJOptimizer.class);
- }
+ if (getUsePCJ(conf) || getUseOptimalPCJ(conf)) {
+ conf.setPcjOptimizer(PCJOptimizer.class);
+ }
if (getUsePcjUpdaterIndex(conf)) {
indexList.add(PrecomputedJoinIndexer.class.getName());
@@ -455,7 +496,5 @@ public class ConfigUtils {
conf.setStrings(AccumuloRdfConfiguration.CONF_ADDITIONAL_INDEXERS, indexList.toArray(new String[] {}));
conf.setStrings(RdfCloudTripleStoreConfiguration.CONF_OPTIMIZERS, optimizers.toArray(new String[] {}));
-
}
-
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/entity/EntityOptimizer.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/entity/EntityOptimizer.java b/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/entity/EntityOptimizer.java
index 244493a..d06cfd7 100644
--- a/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/entity/EntityOptimizer.java
+++ b/extras/indexing/src/main/java/org/apache/rya/indexing/accumulo/entity/EntityOptimizer.java
@@ -27,7 +27,6 @@ import java.util.Set;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.TableExistsException;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.rya.accumulo.AccumuloRdfConfiguration;
@@ -72,7 +71,7 @@ public class EntityOptimizer implements QueryOptimizer, Configurable {
eval = new AccumuloSelectivityEvalDAO(conf, ConfigUtils.getConnector(conf));
((AccumuloSelectivityEvalDAO)eval).setRdfEvalDAO(new ProspectorServiceEvalStatsDAO(ConfigUtils.getConnector(conf), conf));
eval.init();
- } catch (final AccumuloException | AccumuloSecurityException | TableExistsException e) {
+ } catch (final AccumuloException | AccumuloSecurityException e) {
LOG.warn("A problem was encountered while constructing the EntityOptimizer.", e);
}
@@ -104,7 +103,7 @@ public class EntityOptimizer implements QueryOptimizer, Configurable {
eval = new AccumuloSelectivityEvalDAO(this.conf, ConfigUtils.getConnector(this.conf));
((AccumuloSelectivityEvalDAO)eval).setRdfEvalDAO(new ProspectorServiceEvalStatsDAO(ConfigUtils.getConnector(this.conf), this.conf));
eval.init();
- } catch (final AccumuloException | AccumuloSecurityException | TableExistsException e) {
+ } catch (final AccumuloException | AccumuloSecurityException e) {
LOG.warn("A problem was encountered while setting the Configuration for the EntityOptimizer.", e);
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/extras/indexing/src/main/java/org/apache/rya/sail/config/RyaSailFactory.java
----------------------------------------------------------------------
diff --git a/extras/indexing/src/main/java/org/apache/rya/sail/config/RyaSailFactory.java b/extras/indexing/src/main/java/org/apache/rya/sail/config/RyaSailFactory.java
index 68f1394..bdb33ce 100644
--- a/extras/indexing/src/main/java/org/apache/rya/sail/config/RyaSailFactory.java
+++ b/extras/indexing/src/main/java/org/apache/rya/sail/config/RyaSailFactory.java
@@ -26,8 +26,6 @@ import java.util.Objects;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.hadoop.conf.Configuration;
import org.apache.rya.accumulo.AccumuloRdfConfiguration;
import org.apache.rya.accumulo.AccumuloRyaDAO;
@@ -147,9 +145,8 @@ public class RyaSailFactory {
public static void updateAccumuloConfig(final AccumuloRdfConfiguration config, final String user, final String pswd, final String ryaInstance) throws AccumuloException, AccumuloSecurityException {
try {
- final PasswordToken pswdToken = new PasswordToken(pswd);
- final Instance accInst = ConfigUtils.getInstance(config);
- final AccumuloRyaInstanceDetailsRepository ryaDetailsRepo = new AccumuloRyaInstanceDetailsRepository(accInst.getConnector(user, pswdToken), ryaInstance);
+ final Connector connector = ConfigUtils.getConnector(config);
+ final AccumuloRyaInstanceDetailsRepository ryaDetailsRepo = new AccumuloRyaInstanceDetailsRepository(connector, ryaInstance);
RyaDetailsToConfiguration.addRyaDetailsToConfiguration(ryaDetailsRepo.getRyaInstanceDetails(), config);
} catch(final RyaDetailsRepositoryException e) {
LOG.info("Instance does not have a rya details collection, skipping.");
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorService.java
----------------------------------------------------------------------
diff --git a/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorService.java b/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorService.java
index 205d4fc..6e0609d 100644
--- a/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorService.java
+++ b/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorService.java
@@ -64,18 +64,21 @@ public class ProspectorService {
* @param tableName - The name of the Accumulo table that will be queried for Prospect results. (not null)
* @throws AccumuloException A problem occurred while creating the table.
* @throws AccumuloSecurityException A problem occurred while creating the table.
- * @throws TableExistsException A problem occurred while creating the table.
*/
- public ProspectorService(Connector connector, String tableName) throws AccumuloException, AccumuloSecurityException, TableExistsException {
+ public ProspectorService(Connector connector, String tableName) throws AccumuloException, AccumuloSecurityException {
this.connector = requireNonNull(connector);
this.tableName = requireNonNull(tableName);
this.plans = ProspectorUtils.planMap(manager.getPlans());
// Create the table if it doesn't already exist.
- final TableOperations tos = connector.tableOperations();
- if(!tos.exists(tableName)) {
- tos.create(tableName);
+ try {
+ final TableOperations tos = connector.tableOperations();
+ if(!tos.exists(tableName)) {
+ tos.create(tableName);
+ }
+ } catch(TableExistsException e) {
+ // Do nothing. Something else must have made it while we were.
}
}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/4b755c64/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorServiceEvalStatsDAO.java
----------------------------------------------------------------------
diff --git a/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorServiceEvalStatsDAO.java b/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorServiceEvalStatsDAO.java
index 3bb3b26..3e45781 100644
--- a/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorServiceEvalStatsDAO.java
+++ b/extras/rya.prospector/src/main/java/org/apache/rya/prospector/service/ProspectorServiceEvalStatsDAO.java
@@ -18,6 +18,8 @@
*/
package org.apache.rya.prospector.service;
+import static java.util.Objects.requireNonNull;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -25,8 +27,10 @@ import java.util.List;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.TableExistsException;
import org.apache.accumulo.core.client.TableNotFoundException;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.rya.accumulo.AccumuloRdfConfiguration;
+import org.apache.rya.accumulo.utils.ConnectorFactory;
import org.apache.rya.api.RdfCloudTripleStoreConfiguration;
import org.apache.rya.api.persist.RdfDAOException;
import org.apache.rya.api.persist.RdfEvalStatsDAO;
@@ -50,10 +54,26 @@ public class ProspectorServiceEvalStatsDAO implements RdfEvalStatsDAO<RdfCloudTr
this.prospectorService = prospectorService;
}
- public ProspectorServiceEvalStatsDAO(Connector connector, RdfCloudTripleStoreConfiguration conf) throws AccumuloException, AccumuloSecurityException, TableExistsException {
+ public ProspectorServiceEvalStatsDAO(Connector connector, RdfCloudTripleStoreConfiguration conf) throws AccumuloException, AccumuloSecurityException {
this.prospectorService = new ProspectorService(connector, getProspectTableName(conf));
}
+ /**
+ * Creates an instance of {@link ProspectorServiceEvalStatsDAO} that is connected to the Accumulo and Rya instance
+ * that is specified within the provided {@link Configuration}.
+ *
+ * @param config - Configures which instance of Accumulo Rya this DAO will be backed by. (not null)
+ * @return A new instance of {@link ProspectorServiceEvalStatsDAO}.
+ * @throws AccumuloException The connector couldn't be created because of an Accumulo problem.
+ * @throws AccumuloSecurityException The connector couldn't be created because of an Accumulo security violation.
+ */
+ public static ProspectorServiceEvalStatsDAO make(Configuration config) throws AccumuloException, AccumuloSecurityException {
+ requireNonNull(config);
+ AccumuloRdfConfiguration accConfig = new AccumuloRdfConfiguration(config);
+ return new ProspectorServiceEvalStatsDAO(ConnectorFactory.connect(accConfig), accConfig);
+ }
+
+
@Override
public void init() {
assert prospectorService != null;