summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/MapConverter.java7
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java6
2 files changed, 9 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MapConverter.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MapConverter.java
index 5e423a51b7a..3a9568a7370 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MapConverter.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/MapConverter.java
@@ -4,6 +4,7 @@ package com.yahoo.search.dispatch.rpc;
import ai.vespa.searchlib.searchprotocol.protobuf.SearchProtocol.StringProperty;
import ai.vespa.searchlib.searchprotocol.protobuf.SearchProtocol.TensorProperty;
import com.google.protobuf.ByteString;
+import com.yahoo.io.GrowableByteBuffer;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.serialization.TypedBinaryFormat;
@@ -51,12 +52,12 @@ public class MapConverter {
for (var entry : map.entrySet()) {
if (entry.getValue() != null) {
var key = entry.getKey();
- var stringValues = new ArrayList<String>();
+ var stringValues = new ArrayList<String>(entry.getValue().size());
for (var value : entry.getValue()) {
if (value != null) {
if (value instanceof Tensor tensor) {
- byte[] encoded = TypedBinaryFormat.encode(tensor);
- tensorInserter.accept(TensorProperty.newBuilder().setName(key).setValue(ByteString.copyFrom(encoded)));
+ var buffer = TypedBinaryFormat.encode(tensor, new GrowableByteBuffer(4096));
+ tensorInserter.accept(TensorProperty.newBuilder().setName(key).setValue(ByteString.copyFrom(buffer.getByteBuffer().flip())));
} else {
stringValues.add(value.toString());
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java
index a08e09765c8..951c23310dc 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/TypedBinaryFormat.java
@@ -33,9 +33,13 @@ public class TypedBinaryFormat {
public static byte[] encode(Tensor tensor) {
GrowableByteBuffer buffer = new GrowableByteBuffer();
+ encode(tensor, buffer);
+ return asByteArray(buffer);
+ }
+ public static GrowableByteBuffer encode(Tensor tensor, GrowableByteBuffer buffer) {
BinaryFormat encoder = getFormatEncoder(buffer, tensor);
encoder.encode(buffer, tensor);
- return asByteArray(buffer);
+ return buffer;
}
/**