diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-03-13 22:52:43 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-13 22:52:43 +0100 |
commit | a289c6ea55bc0251e437805892e545c5c3090f99 (patch) | |
tree | 661d9d3b319c3299a6f70eb47044c192476f1494 /configserver | |
parent | 7e92c3852e893d09f0aa821e04e4e9dbe83b4ab2 (diff) |
Revert "Bratseth/search to schema"
Diffstat (limited to 'configserver')
5 files changed, 77 insertions, 64 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java index 9cb97b9cfb5..13ef19f5f5d 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClient.java @@ -87,16 +87,17 @@ public class ZooKeeperClient { /** Sets the app id and attempts to set up zookeeper. The app id must be ordered for purge to work OK. */ private void createZooKeeperNodes() { - if ( ! configCurator.exists(rootPath.getAbsolute())) + if (!configCurator.exists(rootPath.getAbsolute())) { configCurator.createNode(rootPath.getAbsolute()); + } - for (String subPath : Arrays.asList(ConfigCurator.DEFCONFIGS_ZK_SUBPATH, - ConfigCurator.USER_DEFCONFIGS_ZK_SUBPATH, - ConfigCurator.USERAPP_ZK_SUBPATH, - ZKApplicationPackage.fileRegistryNode)) { - // TODO: The replaceFirst below is hackish. - configCurator.createNode(getZooKeeperAppPath(null).getAbsolute(), - subPath.replaceFirst("/", "")); + for (String subPath : Arrays.asList( + ConfigCurator.DEFCONFIGS_ZK_SUBPATH, + ConfigCurator.USER_DEFCONFIGS_ZK_SUBPATH, + ConfigCurator.USERAPP_ZK_SUBPATH, + ZKApplicationPackage.fileRegistryNode)) { + // TODO The replaceFirst below is hackish. + configCurator.createNode(getZooKeeperAppPath(null).getAbsolute(), subPath.replaceFirst("/", "")); } } @@ -107,6 +108,7 @@ public class ZooKeeperClient { */ void write(ApplicationPackage app) { logFine("Feeding application config into ZooKeeper"); + // gives lots and lots of debug output: // BasicConfigurator.configure(); try { logFine("Feeding user def files into ZooKeeper"); writeUserDefs(app); @@ -119,33 +121,43 @@ public class ZooKeeperClient { write(app.getMetaData()); } catch (Exception e) { throw new IllegalStateException("Unable to write vespa model to config server(s) " + System.getProperty("configsources") + "\n" + - "Please ensure that cloudconfig_server is started on the config server node(s), " + - "and check the vespa log for configserver errors. ", e); + "Please ensure that cloudconfig_server is started on the config server node(s), " + + "and check the vespa log for configserver errors. ", e); } } private void writeSearchDefinitions(ApplicationPackage app) throws IOException { Collection<NamedReader> sds = app.getSearchDefinitions(); - if (sds.isEmpty()) return; - - Path zkPath = getZooKeeperAppPath(ConfigCurator.USERAPP_ZK_SUBPATH).append(ApplicationPackage.SCHEMAS_DIR); + if (sds.isEmpty()) { + return; + } + Path zkPath = getZooKeeperAppPath(ConfigCurator.USERAPP_ZK_SUBPATH).append(ApplicationPackage.SEARCH_DEFINITIONS_DIR); configCurator.createNode(zkPath.getAbsolute()); - // Ensures that ranking expressions and other files are also written + // Ensures that ranking expressions and other files are also fed. writeDir(app.getFile(ApplicationPackage.SEARCH_DEFINITIONS_DIR), zkPath, false); - writeDir(app.getFile(ApplicationPackage.SCHEMAS_DIR), zkPath, false); for (NamedReader sd : sds) { - configCurator.putData(zkPath.getAbsolute(), sd.getName(), com.yahoo.io.IOUtils.readAll(sd.getReader())); - sd.getReader().close(); + String name = sd.getName(); + Reader reader = sd.getReader(); + String data = com.yahoo.io.IOUtils.readAll(reader); + reader.close(); + configCurator.putData(zkPath.getAbsolute(), name, data); } } /** * Puts some of the application package files into ZK - see write(app). * - * @param app the application package to use as input. - * @throws java.io.IOException if not able to write to Zookeeper + * @param app The application package to use as input. + * @throws java.io.IOException if not able to write to Zookeeper */ private void writeSomeOf(ApplicationPackage app) throws IOException { + ApplicationFile.PathFilter srFilter = new ApplicationFile.PathFilter() { + @Override + public boolean accept(Path path) { + return path.getName().endsWith(ApplicationPackage.RULES_NAME_SUFFIX); + } + }; + // Copy app package files and subdirs into zk // TODO: We should have a way of doing this which doesn't require repeating all the content writeFile(app.getFile(Path.fromString(ApplicationPackage.SERVICES)), getZooKeeperAppPath(ConfigCurator.USERAPP_ZK_SUBPATH)); @@ -157,8 +169,7 @@ public class ZooKeeperClient { getZooKeeperAppPath(ConfigCurator.USERAPP_ZK_SUBPATH)); writeDir(app.getFile(ApplicationPackage.RULES_DIR), getZooKeeperAppPath(ConfigCurator.USERAPP_ZK_SUBPATH).append(ApplicationPackage.RULES_DIR), - (path) -> path.getName().endsWith(ApplicationPackage.RULES_NAME_SUFFIX), - true); + srFilter, true); writeDir(app.getFile(ApplicationPackage.QUERY_PROFILES_DIR), getZooKeeperAppPath(ConfigCurator.USERAPP_ZK_SUBPATH).append(ApplicationPackage.QUERY_PROFILES_DIR), xmlFilter, true); @@ -183,12 +194,20 @@ public class ZooKeeperClient { } private void writeDir(ApplicationFile file, Path zooKeeperAppPath, boolean recurse) throws IOException { - writeDir(file, zooKeeperAppPath, (__) -> true, recurse); + writeDir(file, zooKeeperAppPath, new ApplicationFile.PathFilter() { + @Override + public boolean accept(Path path) { + return true; + } + }, recurse); } private void writeDir(ApplicationFile dir, Path path, ApplicationFile.PathFilter filenameFilter, boolean recurse) throws IOException { - if ( ! dir.isDirectory()) return; - for (ApplicationFile file : listFiles(dir, filenameFilter)) { + if (!dir.isDirectory()) { + logger.log(LogLevel.FINE, dir.getPath().getAbsolute()+" is not a directory. Not feeding the files into ZooKeeper."); + return; + } + for (ApplicationFile file: listFiles(dir, filenameFilter)) { String name = file.getPath().getName(); if (name.startsWith(".")) continue; //.svn , .git ... if ("CVS".equals(name)) continue; @@ -204,8 +223,7 @@ public class ZooKeeperClient { } /** - * Like {@link ApplicationFile#listFiles(com.yahoo.config.application.api.ApplicationFile.PathFilter)} - * with slightly different semantics: Never filter out directories. + * Like {@link ApplicationFile#listFiles(com.yahoo.config.application.api.ApplicationFile.PathFilter)} with a slightly different semantic. Never filter out directories. */ private List<ApplicationFile> listFiles(ApplicationFile dir, ApplicationFile.PathFilter filter) { List<ApplicationFile> rawList = dir.listFiles(); @@ -225,8 +243,9 @@ public class ZooKeeperClient { } private void writeFile(ApplicationFile file, Path zkPath) throws IOException { - if ( ! file.exists()) return; - + if (!file.exists()) { + return; + } ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (InputStream inputStream = file.createInputStream()) { inputStream.transferTo(baos); @@ -273,8 +292,8 @@ public class ZooKeeperClient { String exportedRegistry = PreGeneratedFileRegistry.exportRegistry(fileRegistry); configCurator.putData(getZooKeeperAppPath(null).append(ZKApplicationPackage.fileRegistryNode).getAbsolute(), - vespaVersion.toFullString(), - exportedRegistry); + vespaVersion.toFullString(), + exportedRegistry); } /** @@ -324,8 +343,9 @@ public class ZooKeeperClient { } public void write(AllocatedHosts hosts) throws IOException { - configCurator.putData(rootPath.append(ZKApplicationPackage.allocatedHostsNode).getAbsolute(), - AllocatedHostsSerializer.toJson(hosts)); + configCurator.putData( + rootPath.append(ZKApplicationPackage.allocatedHostsNode).getAbsolute(), + AllocatedHostsSerializer.toJson(hosts)); } public void write(Map<Version, FileRegistry> fileRegistryMap) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java index 5f180bdaee1..3ae678969eb 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplication.java @@ -9,12 +9,14 @@ import java.io.StringReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Optional; /** * Responsible for providing data from an application subtree in zookeeper. * (i.e. /config/v2/tenants/x/session/<session id for an application>/). * + * Takes care of + * + * * @author Tony Vaagenes */ public class ZKApplication { @@ -82,10 +84,6 @@ public class ZKApplication { return reader(data); } - Optional<Reader> getOptionalDataReader(String path, String node) { - return Optional.ofNullable(getData(path, node)).map(data -> reader(data)); - } - public String getData(String path, String node) { try { return zk.getData(getFullPath(path), node); @@ -183,9 +181,10 @@ public class ZKApplication { } Reader getDataReader(String path) { - String data = getData(path); - if (data == null) + final String data = getData(path); + if (data == null) { throw new IllegalArgumentException("No node for " + getFullPath(path) + " exists"); + } return reader(data); } 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 c7ec2657996..bcb958c4b58 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 @@ -139,16 +139,13 @@ public class ZKApplicationPackage implements ApplicationPackage { @Override public List<NamedReader> searchDefinitionContents() { - List<NamedReader> schemas = new ArrayList<>(); - for (String sd : zkApplication.getChildren(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SEARCH_DEFINITIONS_DIR)) { - if (sd.endsWith(ApplicationPackage.SD_NAME_SUFFIX)) - schemas.add(new NamedReader(sd, new StringReader(zkApplication.getData(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SEARCH_DEFINITIONS_DIR, sd)))); - } - for (String sd : zkApplication.getChildren(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SCHEMAS_DIR)) { - if (sd.endsWith(ApplicationPackage.SD_NAME_SUFFIX)) - schemas.add(new NamedReader(sd, new StringReader(zkApplication.getData(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SCHEMAS_DIR, sd)))); + List<NamedReader> ret = new ArrayList<>(); + for (String sd : zkApplication.getChildren(ConfigCurator.USERAPP_ZK_SUBPATH+"/"+SEARCH_DEFINITIONS_DIR)) { + if (sd.endsWith(ApplicationPackage.SD_NAME_SUFFIX)) { + ret.add(new NamedReader(sd, new StringReader(zkApplication.getData(ConfigCurator.USERAPP_ZK_SUBPATH+"/"+SEARCH_DEFINITIONS_DIR, sd)))); + } } - return schemas; + return ret; } @Override @@ -179,7 +176,7 @@ public class ZKApplicationPackage implements ApplicationPackage { try { return zkApplication.getDataReader(ConfigCurator.DEFCONFIGS_ZK_SUBPATH, def); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("Could not retrieve config definition " + def, e); + throw new IllegalArgumentException("Could not retrieve config definition " + def + ".", e); } } @@ -267,10 +264,7 @@ public class ZKApplicationPackage implements ApplicationPackage { @Override public Reader getRankingExpression(String name) { - Optional<Reader> reader = zkApplication.getOptionalDataReader(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SCHEMAS_DIR, name); - if (reader.isPresent()) - return reader.get(); - return zkApplication.getDataReader(ConfigCurator.USERAPP_ZK_SUBPATH + "/" + SEARCH_DEFINITIONS_DIR, name); + return zkApplication.getDataReader(ConfigCurator.USERAPP_ZK_SUBPATH+"/"+SEARCH_DEFINITIONS_DIR, name); } @Override diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java index 91d59bbeb4e..14fa0cb2dbe 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/ZooKeeperClientTest.java @@ -170,16 +170,16 @@ public class ZooKeeperClientTest { @Test public void search_definitions_written_to_ZK() { - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("music.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("base.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("video.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("book.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("pc.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("laptop.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("product.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("sock.sd").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("foo.expression").getAbsolute())); - assertTrue(zk.exists(appPath().append(ApplicationPackage.SCHEMAS_DIR).append("bar.expression").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("music.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("base.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("video.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("book.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("pc.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("laptop.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("product.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("sock.sd").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("foo.expression").getAbsolute())); + assertTrue(zk.exists(appPath().append(ApplicationPackage.SEARCH_DEFINITIONS_DIR).append("bar.expression").getAbsolute())); } private Path appPath() { diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java index e6fa1768024..f2c6aac2bda 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackageTest.java @@ -59,7 +59,7 @@ public class ZKApplicationPackageTest { assertTrue(Pattern.compile(".*<alias>.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getHosts())).matches()); assertTrue(Pattern.compile(".*<slobroks>.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getFile(Path.fromString("services.xml")).createReader())).matches()); DeployState deployState = new DeployState.Builder().applicationPackage(zkApp).build(); - assertEquals(deployState.getSchemas().size(), 5); + assertEquals(deployState.getSearchDefinitions().size(), 5); assertEquals(zkApp.searchDefinitionContents().size(), 5); assertEquals(IOUtils.readAll(zkApp.getRankingExpression("foo.expression")), "foo()+1\n"); assertEquals(zkApp.getFiles(Path.fromString(""), "xml").size(), 3); |