You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ed...@apache.org on 2022/06/17 21:08:23 UTC
[accumulo] branch main updated: lazy load prop store (#2781)
This is an automated email from the ASF dual-hosted git repository.
edcoleman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new 9cfd339ba1 lazy load prop store (#2781)
9cfd339ba1 is described below
commit 9cfd339ba1e7b0eb5059cb7d4d0a1ad4f73c2f74
Author: EdColeman <de...@etcoleman.com>
AuthorDate: Fri Jun 17 21:08:18 2022 +0000
lazy load prop store (#2781)
---
.../main/java/org/apache/accumulo/server/ServerContext.java | 7 ++++---
.../accumulo/server/conf/ServerConfigurationFactory.java | 10 +---------
.../apache/accumulo/server/conf/store/impl/ZooPropStore.java | 2 +-
.../accumulo/server/conf/ServerConfigurationFactoryTest.java | 11 ++++++++---
.../apache/accumulo/test/conf/util/ConfigTransformerIT.java | 2 +-
.../org/apache/accumulo/test/conf/util/TransformTokenIT.java | 2 +-
6 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java b/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
index 462cdc1292..800251b9d1 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/ServerContext.java
@@ -96,7 +96,7 @@ public class ServerContext extends ClientContext {
private final ServerInfo info;
private final ZooReaderWriter zooReaderWriter;
private final ServerDirs serverDirs;
- private final PropStore propStore;
+ private final Supplier<ZooPropStore> propStore;
// lazily loaded resources, only loaded when needed
private final Supplier<TableManager> tableManager;
@@ -119,7 +119,8 @@ public class ServerContext extends ClientContext {
this.info = info;
zooReaderWriter = new ZooReaderWriter(info.getSiteConfiguration());
serverDirs = info.getServerDirs();
- propStore = ZooPropStore.initialize(info.getInstanceID(), zooReaderWriter);
+
+ propStore = memoize(() -> ZooPropStore.initialize(getInstanceID(), getZooReaderWriter()));
tableManager = memoize(() -> new TableManager(this));
nameAllocator = memoize(() -> new UniqueNameAllocator(this));
@@ -443,7 +444,7 @@ public class ServerContext extends ClientContext {
}
public PropStore getPropStore() {
- return propStore;
+ return propStore.get();
}
@Override
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java b/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
index 3e4c935878..718cc480f9 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
@@ -20,7 +20,6 @@ package org.apache.accumulo.server.conf;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Supplier;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
@@ -33,13 +32,10 @@ import org.apache.accumulo.server.ServerContext;
import org.apache.accumulo.server.conf.store.NamespacePropKey;
import org.apache.accumulo.server.conf.store.PropChangeListener;
import org.apache.accumulo.server.conf.store.PropStoreKey;
-import org.apache.accumulo.server.conf.store.SystemPropKey;
import org.apache.accumulo.server.conf.store.TablePropKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Suppliers;
-
/**
* A factor for configurations used by a server process. Instance of this class are thread-safe.
*/
@@ -53,15 +49,11 @@ public class ServerConfigurationFactory extends ServerConfiguration {
private final ServerContext context;
private final SiteConfiguration siteConfig;
- private final Supplier<SystemConfiguration> systemConfig;
-
private final DeleteWatcher deleteWatcher = new DeleteWatcher();
public ServerConfigurationFactory(ServerContext context, SiteConfiguration siteConfig) {
this.context = context;
this.siteConfig = siteConfig;
- systemConfig = Suppliers.memoize(
- () -> new SystemConfiguration(context, SystemPropKey.of(context), getSiteConfiguration()));
}
public ServerContext getServerContext() {
@@ -78,7 +70,7 @@ public class ServerConfigurationFactory extends ServerConfiguration {
@Override
public AccumuloConfiguration getSystemConfiguration() {
- return systemConfig.get();
+ return context.getConfiguration();
}
@Override
diff --git a/server/base/src/main/java/org/apache/accumulo/server/conf/store/impl/ZooPropStore.java b/server/base/src/main/java/org/apache/accumulo/server/conf/store/impl/ZooPropStore.java
index 186f2dd45b..d360b6117b 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/conf/store/impl/ZooPropStore.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/conf/store/impl/ZooPropStore.java
@@ -123,7 +123,7 @@ public class ZooPropStore implements PropStore, PropChangeListener {
}
}
- public static PropStore initialize(@NonNull final InstanceId instanceId,
+ public static ZooPropStore initialize(@NonNull final InstanceId instanceId,
@NonNull final ZooReaderWriter zrw) {
return new ZooPropStore(instanceId, zrw);
}
diff --git a/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java b/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
index 585e7a0137..71e13cda8a 100644
--- a/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
+++ b/server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
@@ -58,6 +58,7 @@ public class ServerConfigurationFactoryTest {
private PropStore propStore;
private ServerContext context;
+ private SystemConfiguration sysConfig;
private ServerConfigurationFactory scf;
@BeforeEach
@@ -73,6 +74,10 @@ public class ServerConfigurationFactoryTest {
propStore.registerAsListener(anyObject(), anyObject());
expectLastCall().anyTimes();
+ sysConfig = createMock(SystemConfiguration.class);
+ sysConfig.getProperties(anyObject(), anyObject());
+ expectLastCall().anyTimes();
+
context = createMock(ServerContext.class);
expect(context.getZooKeeperRoot()).andReturn("/accumulo/" + IID).anyTimes();
expect(context.getInstanceID()).andReturn(IID).anyTimes();
@@ -81,7 +86,7 @@ public class ServerConfigurationFactoryTest {
expect(context.getSiteConfiguration()).andReturn(siteConfig).anyTimes();
expect(context.tableNodeExists(TID)).andReturn(true).anyTimes();
expect(context.getPropStore()).andReturn(propStore).anyTimes();
-
+ expect(context.getConfiguration()).andReturn(sysConfig).anyTimes();
scf = new ServerConfigurationFactory(context, siteConfig) {
@Override
public NamespaceConfiguration getNamespaceConfigurationForTable(TableId tableId) {
@@ -92,12 +97,12 @@ public class ServerConfigurationFactoryTest {
}
};
- replay(propStore, context);
+ replay(propStore, context, sysConfig);
}
@AfterEach
public void verifyMocks() {
- verify(propStore, context);
+ verify(propStore, context, sysConfig);
}
@Test
diff --git a/test/src/main/java/org/apache/accumulo/test/conf/util/ConfigTransformerIT.java b/test/src/main/java/org/apache/accumulo/test/conf/util/ConfigTransformerIT.java
index 165eb17179..0e8d7c0d43 100644
--- a/test/src/main/java/org/apache/accumulo/test/conf/util/ConfigTransformerIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/conf/util/ConfigTransformerIT.java
@@ -101,7 +101,7 @@ public class ConfigTransformerIT {
for (LegacyPropData.PropNode node : nodes) {
zrw.putPersistentData(node.getPath(), node.getData(), ZooUtil.NodeExistsPolicy.SKIP);
}
- propStore = (ZooPropStore) ZooPropStore.initialize(instanceId, zrw);
+ propStore = ZooPropStore.initialize(instanceId, zrw);
context = createMock(ServerContext.class);
expect(context.getInstanceID()).andReturn(instanceId).anyTimes();
diff --git a/test/src/main/java/org/apache/accumulo/test/conf/util/TransformTokenIT.java b/test/src/main/java/org/apache/accumulo/test/conf/util/TransformTokenIT.java
index e86970fe7a..66c458dff5 100644
--- a/test/src/main/java/org/apache/accumulo/test/conf/util/TransformTokenIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/conf/util/TransformTokenIT.java
@@ -89,7 +89,7 @@ public class TransformTokenIT {
zrw.putPersistentData(node.getPath(), node.getData(), ZooUtil.NodeExistsPolicy.SKIP);
}
- ZooPropStore propStore = (ZooPropStore) ZooPropStore.initialize(instanceId, zrw);
+ ZooPropStore propStore = ZooPropStore.initialize(instanceId, zrw);
context = createMock(ServerContext.class);
expect(context.getInstanceID()).andReturn(instanceId).anyTimes();