summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-01-24 13:56:04 +0000
committerArne Juul <arnej@yahooinc.com>2023-01-24 14:00:10 +0000
commit091e1b11ecfeb09025cea8316c681e1e8da8c6ea (patch)
treee0d240e63c3b1f01021b51aeeab6cedc4553154b
parent16b5b25f8c7512c122bb3e7c1cd5c412f8506c48 (diff)
ignore ._foo.sd and other "resource fork" like names
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java14
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java4
-rw-r--r--config-model/src/main/java/com/yahoo/schema/ApplicationBuilder.java5
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java8
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;
}