diff options
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)); |