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
commit 0e681c6eb30ad89d4c24a50fbe5c287305d1b534 Author: Christopher Tubbs <ctubb...@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 +++++++++++++-- .../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 +- 7 files changed, 35 insertions(+), 22 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/SiteConfiguration.java b/core/src/main/java/org/apache/accumulo/core/conf/SiteConfiguration.java index c22862571c..d88c7f58bd 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 @@ -277,4 +277,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