You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2022/04/27 17:54:43 UTC
[accumulo] branch single-node-props updated: Improve getting parent from AccumuloConfiguration
This is an automated email from the ASF dual-hosted git repository.
ctubbsii pushed a commit to branch single-node-props
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/single-node-props by this push:
new cccb8b40b1 Improve getting parent from AccumuloConfiguration
cccb8b40b1 is described below
commit cccb8b40b15678bc90d297a04752f48ad0d46b53
Author: Christopher Tubbs <ct...@apache.org>
AuthorDate: Wed Apr 27 13:46:24 2022 -0400
Improve getting parent from AccumuloConfiguration
* Also improve the singleton loading of DefaultConfiguration to reduce
object creation
---
.../apache/accumulo/core/conf/AccumuloConfiguration.java | 15 +++++++++++++--
.../apache/accumulo/core/conf/DefaultConfiguration.java | 10 ++++++++--
.../org/apache/accumulo/core/conf/SiteConfiguration.java | 5 +++++
.../accumulo/server/conf/NamespaceConfiguration.java | 14 +++++---------
.../apache/accumulo/server/conf/TableConfiguration.java | 14 +++++---------
.../org/apache/accumulo/server/conf/ZooConfiguration.java | 5 +++++
.../accumulo/server/conf/NamespaceConfigurationTest.java | 2 +-
.../accumulo/server/conf/TableConfigurationTest.java | 2 +-
8 files changed, 43 insertions(+), 24 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java b/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
index 84043937c0..f7cc68ac62 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
@@ -63,7 +63,7 @@ public abstract class AccumuloConfiguration implements Iterable<Entry<String,Str
}
private volatile EnumMap<Property,PrefixProps> cachedPrefixProps = new EnumMap<>(Property.class);
- private Lock prefixCacheUpdateLock = new ReentrantLock();
+ private final Lock prefixCacheUpdateLock = new ReentrantLock();
private static final Logger log = LoggerFactory.getLogger(AccumuloConfiguration.class);
@@ -162,7 +162,9 @@ public abstract class AccumuloConfiguration implements Iterable<Entry<String,Str
PrefixProps prefixProps = cachedPrefixProps.get(property);
- if (prefixProps == null || prefixProps.updateCount != getUpdateCount()) {
+ long currentCount = getUpdateCount();
+
+ if (prefixProps == null || prefixProps.updateCount != currentCount) {
prefixCacheUpdateLock.lock();
try {
// Very important that update count is read before getting properties. Also only read it
@@ -600,6 +602,15 @@ public abstract class AccumuloConfiguration implements Iterable<Entry<String,Str
*/
public void invalidateCache() {}
+ /**
+ * get a parent configuration or null if it does not exist.
+ *
+ * @since 2.1.0
+ */
+ public AccumuloConfiguration getParent() {
+ return null;
+ }
+
public Stream<Entry<String,String>> stream() {
return StreamSupport.stream(this.spliterator(), false);
}
diff --git a/core/src/main/java/org/apache/accumulo/core/conf/DefaultConfiguration.java b/core/src/main/java/org/apache/accumulo/core/conf/DefaultConfiguration.java
index f8d958a34d..b4c25570df 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/DefaultConfiguration.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/DefaultConfiguration.java
@@ -21,15 +21,21 @@ package org.apache.accumulo.core.conf;
import java.util.Arrays;
import java.util.Map;
import java.util.function.Predicate;
+import java.util.function.Supplier;
import java.util.stream.Collectors;
+import com.google.common.base.Suppliers;
+
/**
* An {@link AccumuloConfiguration} that contains only default values for properties. This class is
* a singleton.
*/
public class DefaultConfiguration extends AccumuloConfiguration {
- private static final Map<String,String> resolvedProps =
+ private static final Supplier<DefaultConfiguration> singleton =
+ Suppliers.memoize(DefaultConfiguration::new);
+
+ private final Map<String,String> resolvedProps =
Arrays.stream(Property.values()).filter(p -> p.getType() != PropertyType.PREFIX)
.collect(Collectors.toMap(Property::getKey, Property::getDefaultValue));
@@ -41,7 +47,7 @@ public class DefaultConfiguration extends AccumuloConfiguration {
* @return default configuration
*/
public static DefaultConfiguration getInstance() {
- return new DefaultConfiguration();
+ return singleton.get();
}
@Override
diff --git a/core/src/main/java/org/apache/accumulo/core/conf/SiteConfiguration.java b/core/src/main/java/org/apache/accumulo/core/conf/SiteConfiguration.java
index fb97876fb6..e2380138a8 100644
--- a/core/src/main/java/org/apache/accumulo/core/conf/SiteConfiguration.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/SiteConfiguration.java
@@ -271,4 +271,9 @@ public class SiteConfiguration extends AccumuloConfiguration {
}
});
}
+
+ @Override
+ public AccumuloConfiguration getParent() {
+ return parent;
+ }
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/NamespaceConfiguration.java b/server/base/src/main/java/org/apache/accumulo/server/conf/NamespaceConfiguration.java
index 1e7586eeff..e3eb342332 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/NamespaceConfiguration.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/NamespaceConfiguration.java
@@ -53,15 +53,6 @@ public class NamespaceConfiguration extends AccumuloConfiguration {
+ Constants.ZNAMESPACE_CONF;
}
- /**
- * Gets the parent configuration of this configuration.
- *
- * @return parent configuration
- */
- public AccumuloConfiguration getParentConfiguration() {
- return parent;
- }
-
void setZooCacheFactory(ZooCacheFactory zcf) {
this.zcf = zcf;
}
@@ -142,4 +133,9 @@ public class NamespaceConfiguration extends AccumuloConfiguration {
public long getUpdateCount() {
return parent.getUpdateCount() + getPropCacheAccessor().getZooCache().getUpdateCount();
}
+
+ @Override
+ public AccumuloConfiguration getParent() {
+ return parent;
+ }
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java b/server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
index 01ae607493..7de0d53bda 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
@@ -134,15 +134,6 @@ public class TableConfiguration extends AccumuloConfiguration {
return tableId;
}
- /**
- * Gets the parent configuration of this configuration.
- *
- * @return parent configuration
- */
- public NamespaceConfiguration getParentConfiguration() {
- return parent;
- }
-
@Override
public synchronized void invalidateCache() {
ZooCachePropertyAccessor pca = propCacheAccessor.get();
@@ -264,4 +255,9 @@ public class TableConfiguration extends AccumuloConfiguration {
public CompactionDispatcher getCompactionDispatcher() {
return compactionDispatchDeriver.derive();
}
+
+ @Override
+ public AccumuloConfiguration getParent() {
+ return parent;
+ }
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java b/server/base/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
index 82129128cc..7d2306b6d7 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
@@ -141,4 +141,9 @@ public class ZooConfiguration extends AccumuloConfiguration {
public long getUpdateCount() {
return parent.getUpdateCount() + propCache.getUpdateCount();
}
+
+ @Override
+ public AccumuloConfiguration getParent() {
+ return parent;
+ }
}
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
index c5a9d35622..dcc6286760 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
@@ -78,7 +78,7 @@ public class NamespaceConfigurationTest {
@Test
public void testGetters() {
assertEquals(NSID, c.getNamespaceId());
- assertEquals(parent, c.getParentConfiguration());
+ assertEquals(parent, c.getParent());
}
@Test
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
index f16d404a41..c92b06e129 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
@@ -74,7 +74,7 @@ public class TableConfigurationTest {
@Test
public void testGetters() {
assertEquals(TID, c.getTableId());
- assertEquals(parent, c.getParentConfiguration());
+ assertEquals(parent, c.getParent());
}
@Test