From 091e1b11ecfeb09025cea8316c681e1e8da8c6ea Mon Sep 17 00:00:00 2001 From: Arne Juul Date: Tue, 24 Jan 2023 13:56:04 +0000 Subject: ignore ._foo.sd and other "resource fork" like names --- .../model/application/AbstractApplicationPackage.java | 14 ++++++++++++++ .../application/provider/FilesApplicationPackage.java | 4 ++-- .../src/main/java/com/yahoo/schema/ApplicationBuilder.java | 5 +++-- .../config/server/zookeeper/ZKApplicationPackage.java | 8 +++++--- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java index c616784c7be..005c54498fc 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java @@ -41,4 +41,18 @@ public abstract class AbstractApplicationPackage implements ApplicationPackage { return result; } + public static boolean validSchemaFilename(String fn) { + if (! fn.endsWith(SD_NAME_SUFFIX)) { + return false; + } + int lastSlash = fn.lastIndexOf('/'); + if (lastSlash >= 0) { + fn = fn.substring(lastSlash+1); + } + if (fn.startsWith(".")) { + return false; + } + return true; + } + } diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java index c095b9ad586..5707206019f 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java @@ -432,11 +432,11 @@ public class FilesApplicationPackage extends AbstractApplicationPackage { File sdDir = applicationFile(appDir, SEARCH_DEFINITIONS_DIR.getRelative()); if (sdDir.isDirectory()) - schemaFiles.addAll(Arrays.asList(sdDir.listFiles((dir, name) -> name.matches(".*\\" + SD_NAME_SUFFIX)))); + schemaFiles.addAll(Arrays.asList(sdDir.listFiles((dir, name) -> validSchemaFilename(name)))); sdDir = applicationFile(appDir, SCHEMAS_DIR.getRelative()); if (sdDir.isDirectory()) - schemaFiles.addAll(Arrays.asList(sdDir.listFiles((dir, name) -> name.matches(".*\\" + SD_NAME_SUFFIX)))); + schemaFiles.addAll(Arrays.asList(sdDir.listFiles((dir, name) -> validSchemaFilename(name)))); return schemaFiles; } diff --git a/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java b/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java index f002676f05d..9184eb3c4be 100644 --- a/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java +++ b/config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java @@ -5,6 +5,7 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.FileRegistry; import com.yahoo.config.model.api.ModelContext; +import com.yahoo.config.model.application.AbstractApplicationPackage; import com.yahoo.config.model.application.provider.BaseDeployLogger; import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.deploy.TestProperties; @@ -354,7 +355,7 @@ public class ApplicationBuilder { } /** - * Convenience factory methdd to create a SearchBuilder from multiple SD files.. + * Convenience factory method to create a SearchBuilder from multiple SD files. */ private static ApplicationBuilder createFromFiles(Collection fileNames, FileRegistry fileRegistry, @@ -413,7 +414,7 @@ public class ApplicationBuilder { var fnli = Files.list(new File(dir).toPath()) .map(p -> p.toString()) - .filter(fn -> fn.endsWith(".sd")) + .filter(fn -> AbstractApplicationPackage.validSchemaFilename(fn)) .sorted(); for (var i = fnli.iterator(); i.hasNext(); ) { builder.addSchemaFile(i.next()); 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 9b23037ed19..fbf14fbdb8c 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 @@ -138,9 +138,11 @@ public class ZKApplicationPackage extends AbstractApplicationPackage { @Override public List getSchemas() { List schemas = new ArrayList<>(); - for (String sd : zkApplication.getChildren(Path.fromString(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR))) { - if (sd.endsWith(SD_NAME_SUFFIX)) - schemas.add(zkApplication.getNamedReader(sd, Path.fromString(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR).append(sd))); + var sdDir = Path.fromString(USERAPP_ZK_SUBPATH).append(SCHEMAS_DIR); + for (String sdName : zkApplication.getChildren(sdDir)) { + if (validSchemaFilename(sdName)) { + schemas.add(zkApplication.getNamedReader(sdName, sdDir.append(sdName))); + } } return schemas; } -- cgit v1.2.3