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

Reply via email to