This is an automated email from the ASF dual-hosted git repository.
domgarguilo pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/2.1 by this push:
new ddea832b3f Avoid copying default props in
MiniAccumuloConfigImpl.useExistingInstance (#5927)
ddea832b3f is described below
commit ddea832b3f3113698fed4ae565f777ce5faaa320
Author: Dom G. <[email protected]>
AuthorDate: Tue Sep 23 17:14:25 2025 -0400
Avoid copying default props in MiniAccumuloConfigImpl.useExistingInstance
(#5927)
---
.../miniclusterImpl/MiniAccumuloClusterImpl.java | 14 ++++--
.../miniclusterImpl/MiniAccumuloConfigImpl.java | 54 +++++++---------------
2 files changed, 27 insertions(+), 41 deletions(-)
diff --git
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
index 5e04cb0a25..91d158ffb6 100644
---
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
+++
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java
@@ -217,7 +217,7 @@ public class MiniAccumuloClusterImpl implements
AccumuloCluster {
siteConfig.put(Property.INSTANCE_VOLUMES.getKey(), dfsUri + "/accumulo");
config.setSiteConfig(siteConfig);
} else if (config.useExistingInstance()) {
- dfsUri =
config.getHadoopConfiguration().get(CommonConfigurationKeys.FS_DEFAULT_NAME_KEY);
+ dfsUri =
loadExistingHadoopConfiguration().get(CommonConfigurationKeys.FS_DEFAULT_NAME_KEY);
} else {
dfsUri = "file:///";
}
@@ -473,6 +473,14 @@ public class MiniAccumuloClusterImpl implements
AccumuloCluster {
fileWriter.close();
}
+ private Configuration loadExistingHadoopConfiguration() {
+ if (config.getHadoopConfDir() == null) {
+ throw new IllegalStateException(
+ "Hadoop configuration directory is required for existing instances");
+ }
+ return config.buildHadoopConfiguration();
+ }
+
/**
* Starts Accumulo and Zookeeper processes. Can only be called once.
*/
@@ -487,8 +495,8 @@ public class MiniAccumuloClusterImpl implements
AccumuloCluster {
MiniAccumuloClusterControl control = getClusterControl();
if (config.useExistingInstance()) {
- AccumuloConfiguration acuConf = config.getAccumuloConfiguration();
- Configuration hadoopConf = config.getHadoopConfiguration();
+ AccumuloConfiguration acuConf = getSiteConfiguration();
+ Configuration hadoopConf = loadExistingHadoopConfiguration();
ServerDirs serverDirs = new ServerDirs(acuConf, hadoopConf);
Path instanceIdPath;
diff --git
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloConfigImpl.java
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloConfigImpl.java
index 23337a019c..333b3a8c61 100644
---
a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloConfigImpl.java
+++
b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloConfigImpl.java
@@ -28,7 +28,6 @@ import static
org.apache.accumulo.minicluster.ServerType.ZOOKEEPER;
import java.io.File;
import java.io.IOException;
-import java.net.MalformedURLException;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Iterator;
@@ -38,7 +37,6 @@ import java.util.Objects;
import java.util.function.Consumer;
import org.apache.accumulo.compactor.Compactor;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.ClientProperty;
import org.apache.accumulo.core.conf.HadoopCredentialProvider;
import org.apache.accumulo.core.conf.Property;
@@ -54,6 +52,7 @@ import org.apache.accumulo.tserver.ScanServer;
import org.apache.accumulo.tserver.TabletServer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
import org.apache.zookeeper.server.ZooKeeperServerMain;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -122,9 +121,6 @@ public class MiniAccumuloConfigImpl {
private String[] nativePathItems = null;
// These are only used on top of existing instances
- private Configuration hadoopConf;
- private SiteConfiguration accumuloConf;
-
private Consumer<MiniAccumuloConfigImpl> preStartConfigProcessor;
/**
@@ -238,7 +234,7 @@ public class MiniAccumuloConfigImpl {
File keystoreFile = new File(getConfDir(), "credential-provider.jks");
String keystoreUri = "jceks://file" + keystoreFile.getAbsolutePath();
- Configuration conf = getHadoopConfiguration();
+ Configuration conf = buildHadoopConfiguration();
HadoopCredentialProvider.setPath(conf, keystoreUri);
// Set the URI on the siteCfg
@@ -266,6 +262,18 @@ public class MiniAccumuloConfigImpl {
}
}
+ Configuration buildHadoopConfiguration() {
+ Configuration conf = new Configuration(false);
+ if (hadoopConfDir != null) {
+ File coreSite = new File(hadoopConfDir, "core-site.xml");
+ File hdfsSite = new File(hadoopConfDir, "hdfs-site.xml");
+
+ conf.addResource(new Path(coreSite.toURI()));
+ conf.addResource(new Path(hdfsSite.toURI()));
+ }
+ return conf;
+ }
+
/**
* Set a given key/value on the site config if it doesn't already exist
*/
@@ -781,22 +789,10 @@ public class MiniAccumuloConfigImpl {
System.setProperty("accumulo.properties", "accumulo.properties");
this.hadoopConfDir = hadoopConfDir;
- hadoopConf = new Configuration(false);
- accumuloConf = SiteConfiguration.fromFile(accumuloProps).build();
- File coreSite = new File(hadoopConfDir, "core-site.xml");
- File hdfsSite = new File(hadoopConfDir, "hdfs-site.xml");
-
- try {
- hadoopConf.addResource(coreSite.toURI().toURL());
- hadoopConf.addResource(hdfsSite.toURI().toURL());
- } catch (MalformedURLException e1) {
- throw e1;
- }
+ SiteConfiguration siteConfiguration =
SiteConfiguration.fromFile(accumuloProps).build();
Map<String,String> siteConfigMap = new HashMap<>();
- for (Entry<String,String> e : accumuloConf) {
- siteConfigMap.put(e.getKey(), e.getValue());
- }
+ siteConfiguration.getProperties(siteConfigMap, key -> true, false);
_setSiteConfig(siteConfigMap);
return this;
@@ -820,24 +816,6 @@ public class MiniAccumuloConfigImpl {
return this.hadoopConfDir;
}
- /**
- * @return accumulo Configuration being used
- *
- * @since 1.6.2
- */
- public AccumuloConfiguration getAccumuloConfiguration() {
- return accumuloConf;
- }
-
- /**
- * @return hadoop Configuration being used
- *
- * @since 1.6.2
- */
- public Configuration getHadoopConfiguration() {
- return hadoopConf;
- }
-
/**
* @return the default Accumulo "superuser"
* @since 1.7.0