aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-08-17 20:21:05 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-08-17 20:21:05 +0200
commit7b857d81586ba7184279766c215341cb156529ab (patch)
tree9739f6a1246c39e52d4d3c7e87502917b75b5ab5
parentf03038eec17af56fe8c3123cb016c868133a6588 (diff)
Factor out blob -> hash genrating code so it is common to all file registries.
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java13
-rw-r--r--config-model-api/abi-spec.json3
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java3
4 files changed, 20 insertions, 5 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
index 75482ded05d..ac73a0100dc 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
@@ -80,11 +80,20 @@ public class PreGeneratedFileRegistry implements FileRegistry {
@Override
public FileReference addUri(String uri) {
- return new FileReference(path2Hash.get(uri));
+ String reference = path2Hash.get(uri);
+ if (reference == null) {
+ throw new IllegalArgumentException("Uri '" + uri + "' not found");
+ }
+ return new FileReference(reference);
}
@Override
public FileReference addBlob(ByteBuffer blob) {
- return new FileReference(path2Hash.get(blob));
+ String blobName = FileRegistry.blobName(blob);
+ String reference = path2Hash.get(blobName);
+ if (reference == null) {
+ throw new IllegalArgumentException("Blob '" + blobName + "(" + blob.remaining()+ ")' not found");
+ }
+ return new FileReference(reference);
}
@Override
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index 5ad8ee1af0c..5561c400745 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -425,7 +425,8 @@
"public abstract com.yahoo.config.FileReference addBlob(java.nio.ByteBuffer)",
"public com.yahoo.config.FileReference addApplicationPackage()",
"public abstract java.lang.String fileSourceHost()",
- "public abstract java.util.List export()"
+ "public abstract java.util.List export()",
+ "public static java.lang.String blobName(java.nio.ByteBuffer)"
],
"fields": []
},
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java b/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java
index 9d049ae0847..0a809e6b542 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/FileRegistry.java
@@ -5,6 +5,7 @@ import java.nio.ByteBuffer;
import java.util.List;
import com.yahoo.config.FileReference;
+import net.jpountz.xxhash.XXHashFactory;
/**
@@ -34,4 +35,9 @@ public interface FileRegistry {
}
}
+ static String blobName(ByteBuffer blob) {
+ long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
+ return Long.toHexString(blobHash);
+ }
+
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java
index 4605d5e5f5c..1aecc4cde7d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/filedistribution/FileDBRegistry.java
@@ -52,8 +52,7 @@ public class FileDBRegistry implements FileRegistry {
@Override
public FileReference addBlob(ByteBuffer blob) {
- long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
- String blobName = Long.toHexString(blobHash);
+ String blobName = FileRegistry.blobName(blob);
String relativePath = blobToRelativeFile(blob, blobName);
synchronized (this) {
Optional<FileReference> cachedReference = Optional.ofNullable(fileReferenceCache.get(blobName));