diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-01-24 13:56:04 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-01-24 14:00:10 +0000 |
commit | 091e1b11ecfeb09025cea8316c681e1e8da8c6ea (patch) | |
tree | e0d240e63c3b1f01021b51aeeab6cedc4553154b | |
parent | 16b5b25f8c7512c122bb3e7c1cd5c412f8506c48 (diff) |
ignore ._foo.sd and other "resource fork" like names
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<String> 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<NamedReader> getSchemas() { List<NamedReader> 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; } |