aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-08-16 10:51:02 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-08-16 10:51:02 +0200
commit046378a34ec0758963f4c2308b5f58d4d8a08d3f (patch)
tree410a6d40e1387a5061766ec43fc31562d3924652 /configserver
parente536003faa53fd4df212010357d2327946122c14 (diff)
Reduce dependency on PregeneratedFileregistry.
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java24
1 files changed, 18 insertions, 6 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
index cc9b799f2d9..c88b0cf7099 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
@@ -29,9 +29,11 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Set;
import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.DEFCONFIGS_ZK_SUBPATH;
import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_SUBPATH;
@@ -45,7 +47,7 @@ public class ZKApplicationPackage implements ApplicationPackage {
private final ZKApplication zkApplication;
- private final Map<Version, PreGeneratedFileRegistry> fileRegistryMap = new HashMap<>();
+ private final Map<Version, FileRegistry> fileRegistryMap = new HashMap<>();
private final Optional<AllocatedHosts> allocatedHosts;
public static final String fileRegistryNode = "fileregistry";
@@ -91,7 +93,7 @@ public class ZKApplicationPackage implements ApplicationPackage {
importFileRegistry(Joiner.on("/").join(fileRegistryNode, version))));
}
- private PreGeneratedFileRegistry importFileRegistry(String fileRegistryNode) {
+ private FileRegistry importFileRegistry(String fileRegistryNode) {
try {
return PreGeneratedFileRegistry.importRegistry(zkApplication.getDataReader(Path.fromString(fileRegistryNode)));
} catch (Exception e) {
@@ -159,9 +161,9 @@ public class ZKApplicationPackage implements ApplicationPackage {
return Collections.unmodifiableMap(fileRegistryMap);
}
- private Optional<PreGeneratedFileRegistry> getPreGeneratedFileRegistry(Version vespaVersion) {
+ private Optional<FileRegistry> getFileRegistry(Version vespaVersion) {
// Assumes at least one file registry, which we always have.
- Optional<PreGeneratedFileRegistry> fileRegistry = Optional.ofNullable(fileRegistryMap.get(vespaVersion));
+ Optional<FileRegistry> fileRegistry = Optional.ofNullable(fileRegistryMap.get(vespaVersion));
if (fileRegistry.isEmpty()) {
fileRegistry = Optional.of(fileRegistryMap.values().iterator().next());
}
@@ -241,11 +243,21 @@ public class ZKApplicationPackage implements ApplicationPackage {
return Optional.empty();
}
+ private static Set<String> getPaths(FileRegistry fileRegistry) {
+ Set<String> paths = new LinkedHashSet<>();
+ synchronized (fileRegistry) {
+ for (FileRegistry.Entry e : fileRegistry.export()) {
+ paths.add(e.relativePath);
+ }
+ }
+ return paths;
+ }
+
@Override
public List<ComponentInfo> getComponentsInfo(Version vespaVersion) {
List<ComponentInfo> components = new ArrayList<>();
- PreGeneratedFileRegistry fileRegistry = getPreGeneratedFileRegistry(vespaVersion).get();
- for (String path : fileRegistry.getPaths()) {
+ FileRegistry fileRegistry = getFileRegistry(vespaVersion).get();
+ for (String path : getPaths(fileRegistry)) {
if (path.startsWith(COMPONENT_DIR + File.separator) && path.endsWith(".jar")) {
ComponentInfo component = new ComponentInfo(path);
components.add(component);