summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java2
-rw-r--r--config-proxy/pom.xml13
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java4
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java (renamed from filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java)4
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloader.java (renamed from filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java)4
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReceiver.java (renamed from filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java)2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownload.java (renamed from filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java)2
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java (renamed from filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java)2
-rw-r--r--config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java (renamed from filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java)4
-rw-r--r--filedistribution/pom.xml38
-rw-r--r--filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java98
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java28
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/tensor/TensorConformanceTest.java54
-rw-r--r--searchlib/src/tests/rankingexpression/rankingexpressionlist4
-rw-r--r--storage/src/tests/distributor/statecheckerstest.cpp6
-rw-r--r--storage/src/vespa/storage/common/bucketmessages.cpp6
-rw-r--r--storage/src/vespa/storage/common/bucketmessages.h1
-rw-r--r--storage/src/vespa/storage/distributor/statecheckers.cpp4
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h5
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp63
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp47
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h4
-rw-r--r--storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp18
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.cpp6
-rw-r--r--storageapi/src/vespa/storageapi/message/bucket.h1
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.cpp6
-rw-r--r--storageapi/src/vespa/storageapi/message/visitor.h1
27 files changed, 170 insertions, 257 deletions
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
index 95491481e54..1e24b055095 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/JettyContainerModelBuilderTest.java
@@ -208,6 +208,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas
{
ConnectorFactory firstConnector = connectorFactories.get(0);
assertThat(firstConnector.getInjectedComponentIds(), hasItem("ssl-keystore-configurator@foo"));
+ assertThat(firstConnector.getInjectedComponentIds().size(), equalTo(1));
SimpleComponent sslKeystoreConfigurator = firstConnector.getChildrenByTypeRecursive(SimpleComponent.class).get(0);
BundleInstantiationSpecification spec = sslKeystoreConfigurator.model.bundleInstantiationSpec;
assertThat(spec.classId.toString(), is("com.yahoo.MySslKeyStoreConfigurator"));
@@ -216,6 +217,7 @@ public class JettyContainerModelBuilderTest extends ContainerModelBuilderTestBas
{
ConnectorFactory secondFactory = connectorFactories.get(1);
assertThat(secondFactory.getInjectedComponentIds(), hasItem("ssl-keystore-configurator@bar"));
+ assertThat(secondFactory.getInjectedComponentIds().size(), equalTo(1));
SimpleComponent sslKeystoreConfigurator = secondFactory.getChildrenByTypeRecursive(SimpleComponent.class).get(0);
BundleInstantiationSpecification spec = sslKeystoreConfigurator.model.bundleInstantiationSpec;
assertThat(spec.classId.toString(), is(DefaultSslKeyStoreConfigurator.class.getName()));
diff --git a/config-proxy/pom.xml b/config-proxy/pom.xml
index 13e2ddf40e8..8a7b6f253e2 100644
--- a/config-proxy/pom.xml
+++ b/config-proxy/pom.xml
@@ -57,15 +57,10 @@
<artifactId>hamcrest-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>filedistribution</artifactId>
- <version>${project.version}</version>
- </dependency>
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
</dependencies>
<build>
<plugins>
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java
index 28bcca9db13..173d2b8a43a 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/ProxyServer.java
@@ -13,8 +13,8 @@ import com.yahoo.log.event.Event;
import com.yahoo.system.CatchSigTerm;
import com.yahoo.vespa.config.*;
import com.yahoo.vespa.config.protocol.JRTServerConfigRequest;
-import com.yahoo.vespa.filedistribution.FileDistributionRpcServer;
-import com.yahoo.vespa.filedistribution.FileDownloader;
+import com.yahoo.vespa.config.proxy.filedistribution.FileDistributionRpcServer;
+import com.yahoo.vespa.config.proxy.filedistribution.FileDownloader;
import java.util.List;
import java.util.concurrent.Executors;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java
index d09cf17b9e3..b0fbc7acd33 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDistributionRpcServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java
@@ -1,5 +1,5 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.filedistribution;
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.proxy.filedistribution;
import com.yahoo.config.FileReference;
import com.yahoo.jrt.DoubleArray;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloader.java
index cd4b3afb9b5..ac7555c7905 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileDownloader.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloader.java
@@ -1,5 +1,5 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.filedistribution;
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.proxy.filedistribution;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReceiver.java
index 3999389d2c7..e9631c445df 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReceiver.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReceiver.java
@@ -1,6 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.filedistribution;
+package com.yahoo.vespa.config.proxy.filedistribution;
import com.yahoo.config.FileReference;
import com.yahoo.jrt.Int32Value;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownload.java
index fb511411128..ce5a30dc7ad 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownload.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownload.java
@@ -1,6 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.filedistribution;
+package com.yahoo.vespa.config.proxy.filedistribution;
import com.google.common.util.concurrent.SettableFuture;
import com.yahoo.config.FileReference;
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java
index fbadddd624a..c972cfbbf56 100644
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/FileReferenceDownloader.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java
@@ -1,5 +1,5 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.filedistribution;
+package com.yahoo.vespa.config.proxy.filedistribution;
import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.ListenableFuture;
diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java
index 738b0888956..d1b691b9d5e 100644
--- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java
+++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java
@@ -1,6 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package com.yahoo.vespa.filedistribution;
+package com.yahoo.vespa.config.proxy.filedistribution;
import com.yahoo.config.FileReference;
import com.yahoo.io.IOUtils;
diff --git a/filedistribution/pom.xml b/filedistribution/pom.xml
index 288b641134f..e63b85a22b8 100644
--- a/filedistribution/pom.xml
+++ b/filedistribution/pom.xml
@@ -4,43 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <dependencies>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>config-lib</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>vespajlib</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>jrt</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>vespalog</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.yahoo.vespa</groupId>
- <artifactId>config</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <parent>
+ <parent>
<groupId>com.yahoo.vespa</groupId>
<artifactId>parent</artifactId>
<version>6-SNAPSHOT</version>
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
deleted file mode 100644
index 28935c203fe..00000000000
--- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/RpcTester.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-
-package com.yahoo.vespa.filedistribution;
-
-import com.yahoo.config.FileReference;
-import com.yahoo.io.IOUtils;
-import com.yahoo.jrt.DataValue;
-import com.yahoo.jrt.Int32Value;
-import com.yahoo.jrt.Int64Value;
-import com.yahoo.jrt.Request;
-import com.yahoo.jrt.Spec;
-import com.yahoo.jrt.StringValue;
-import com.yahoo.jrt.Supervisor;
-import com.yahoo.jrt.Target;
-import com.yahoo.jrt.Transport;
-import com.yahoo.log.LogLevel;
-import net.jpountz.xxhash.XXHash64;
-import net.jpountz.xxhash.XXHashFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.logging.Logger;
-
-public class RpcTester {
-
- private static final Logger log = Logger.getLogger(RpcTester.class.getName());
-
- private final Target target;
-
- private RpcTester(Target target) {
- this.target = target;
- }
-
- private void call(String fileReference, String filename, byte[] blob) {
- new FileReceiver(target).receive(new FileReference(fileReference), filename, blob);
- }
-
- public static void main(String[] args) {
- //String fileReference = args[0];
- String fileReference = "59f93f445438c9db7ccbf1629f583c2aa004a68b";
- String filename = "com.yahoo.vespatest.ExtraHitSearcher-1.0.0-deploy.jar";
- File file = new File(String.format("/tmp/%s/%s", fileReference, filename));
- byte[] blob = null;
-
- try {
- blob = IOUtils.readFileBytes(file);
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- log.log(LogLevel.INFO, "Read blob from " + file.getAbsolutePath());
-
-
- Supervisor supervisor = new Supervisor(new Transport());
-
- Spec spec = new Spec("tcp/localhost:19090");
- log.log(LogLevel.INFO, "Connecting to " + spec);
- Target target = supervisor.connect(spec);
- if (! target.isValid()) {
- log.log(LogLevel.INFO, "Could not connect");
- System.exit(1);
- } else {
- log.log(LogLevel.INFO, "Connected to " + spec);
- }
-
- new RpcTester(target).call(fileReference, filename, blob);
- }
-
- class FileReceiver {
-
- Target target;
-
- FileReceiver(Target target) {
- this.target = target;
- }
-
- void receive(FileReference reference, String filename, byte[] content) {
-
- log.log(LogLevel.INFO, "Preparing receive call for " + reference.value() + " and file " + filename);
-
- XXHash64 hasher = XXHashFactory.fastestInstance().hash64();
- Request fileBlob = new Request("filedistribution.receiveFile");
-
- log.log(LogLevel.INFO, "Calling " + fileBlob.methodName() + " with target " + target);
-
- fileBlob.parameters().add(new StringValue(reference.value()));
- fileBlob.parameters().add(new StringValue(filename));
- fileBlob.parameters().add(new DataValue(content));
- fileBlob.parameters().add(new Int64Value(hasher.hash(ByteBuffer.wrap(content), 0)));
- fileBlob.parameters().add(new Int32Value(0));
- fileBlob.parameters().add(new StringValue("OK"));
- log.log(LogLevel.INFO, "Doing invokeSync");
- target.invokeSync(fileBlob, 5);
- log.log(LogLevel.INFO, "Done with invokeSync");
- }
- }
-}
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
index 8e34f35245d..82e5d0cfe5b 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/evaluation/EvaluationTestCase.java
@@ -143,6 +143,16 @@ public class EvaluationTestCase {
"min(tensor0, 0)", "{ {d1:0}:-10, {d1:1}:0, {d1:2}:10 }");
tester.assertEvaluates("{ {d1:0}:0, {d1:1}:0, {d1:2 }:10 }",
"max(tensor0, 0)", "{ {d1:0}:-10, {d1:1}:0, {d1:2}:10 }");
+ // operators
+ tester.assertEvaluates("{ {d1:0}:1, {d1:1}:1, {d1:2 }:1 }",
+ "tensor0 % 2 == map(tensor0, f(x) (x % 2))", "{ {d1:0}:2, {d1:1}:3, {d1:2}:4 }");
+ tester.assertEvaluates("{ {d1:0}:1, {d1:1}:1, {d1:2 }:1 }",
+ "tensor0 || 1 == map(tensor0, f(x) (x || 1))", "{ {d1:0}:2, {d1:1}:3, {d1:2}:4 }");
+ tester.assertEvaluates("{ {d1:0}:1, {d1:1}:1, {d1:2 }:1 }",
+ "tensor0 && 1 == map(tensor0, f(x) (x && 1))", "{ {d1:0}:2, {d1:1}:3, {d1:2}:4 }");
+ tester.assertEvaluates("{ {d1:0}:1, {d1:1}:1, {d1:2 }:1 }",
+ "!tensor0 == map(tensor0, f(x) (!x))", "{ {d1:0}:0, {d1:1}:1, {d1:2}:0 }");
+
// -- explicitly implemented functions (not foolproof tests as we don't bother testing float value equivalence)
tester.assertEvaluates("{ {x:0}:1, {x:1}:2 }", "abs(tensor0)", "{ {x:0}:1, {x:1}:-2 }");
tester.assertEvaluates("{ {x:0}:0, {x:1}:0 }", "acos(tensor0)", "{ {x:0}:1, {x:1}:1 }");
@@ -158,8 +168,9 @@ public class EvaluationTestCase {
tester.assertEvaluates("{ {x:0}:0, {x:1}:0 }", "isNan(tensor0)", "{ {x:0}:1, {x:1}:2 }");
tester.assertEvaluates("{ {x:0}:0, {x:1}:0 }", "log(tensor0)", "{ {x:0}:1, {x:1}:1 }");
tester.assertEvaluates("{ {x:0}:0, {x:1}:1 }", "log10(tensor0)", "{ {x:0}:1, {x:1}:10 }");
- tester.assertEvaluates("{ {x:0}:0, {x:1}:2 }", "fmod(tensor0, 3)", "{ {x:0}:3, {x:1}:8 }");
+ tester.assertEvaluates("{ {x:0}:0, {x:1}:2 }", "fmod(tensor0, 3)","{ {x:0}:3, {x:1}:8 }");
tester.assertEvaluates("{ {x:0}:1, {x:1}:8 }", "pow(tensor0, 3)", "{ {x:0}:1, {x:1}:2 }");
+ tester.assertEvaluates("{ {x:0}:8, {x:1}:16 }", "ldexp(tensor0,3.1)","{ {x:0}:1, {x:1}:2 }");
tester.assertEvaluates("{ {x:0}:1, {x:1}:2 }", "relu(tensor0)", "{ {x:0}:1, {x:1}:2 }");
tester.assertEvaluates("{ {x:0}:1, {x:1}:2 }", "round(tensor0)", "{ {x:0}:1, {x:1}:1.8 }");
tester.assertEvaluates("{ {x:0}:0.5, {x:1}:0.5 }", "sigmoid(tensor0)","{ {x:0}:0, {x:1}:0 }");
@@ -237,6 +248,16 @@ public class EvaluationTestCase {
"max(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
tester.assertEvaluates("{ {x:0,y:0}:3, {x:1,y:0}:5 }",
"min(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
+ tester.assertEvaluates("{ {x:0,y:0}:243, {x:1,y:0}:16807 }",
+ "pow(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
+ tester.assertEvaluates("{ {x:0,y:0}:243, {x:1,y:0}:16807 }",
+ "tensor0 ^ tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
+ tester.assertEvaluates("{ {x:0,y:0}:3, {x:1,y:0}:2 }",
+ "fmod(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
+ tester.assertEvaluates("{ {x:0,y:0}:3, {x:1,y:0}:2 }",
+ "tensor0 % tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
+ tester.assertEvaluates("{ {x:0,y:0}:96, {x:1,y:0}:224 }",
+ "ldexp(tensor0, tensor1)", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5.1 }");
tester.assertEvaluates("{ {x:0,y:0,z:0}:7, {x:0,y:0,z:1}:13, {x:1,y:0,z:0}:21, {x:1,y:0,z:1}:39, {x:0,y:1,z:0}:55, {x:0,y:1,z:1}:0, {x:1,y:1,z:0}:0, {x:1,y:1,z:1}:0 }",
"tensor0 * tensor1", "{ {x:0,y:0}:1, {x:1,y:0}:3, {x:0,y:1}:5, {x:1,y:1}:0 }", "{ {y:0,z:0}:7, {y:1,z:0}:11, {y:0,z:1}:13, {y:1,z:1}:0 }");
tester.assertEvaluates("{ {x:0,y:1,z:0}:35, {x:0,y:1,z:1}:65 }",
@@ -261,8 +282,13 @@ public class EvaluationTestCase {
"tensor0 <= tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:5 }");
tester.assertEvaluates("{ {x:0,y:0}:0, {x:1,y:0}:1 }",
"tensor0 == tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:7 }");
+ tester.assertEvaluates("{ {x:0,y:0}:0, {x:1,y:0}:1 }",
+ "tensor0 ~= tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:7 }");
tester.assertEvaluates("{ {x:0,y:0}:1, {x:1,y:0}:0 }",
"tensor0 != tensor1", "{ {x:0}:3, {x:1}:7 }", "{ {y:0}:7 }");
+ tester.assertEvaluates("{ {x:0}:1, {x:1}:0 }",
+ "tensor0 in [1,2,3]", "{ {x:0}:3, {x:1}:7 }");
+
// TODO
// argmax
// argmin
diff --git a/searchlib/src/test/java/com/yahoo/searchlib/tensor/TensorConformanceTest.java b/searchlib/src/test/java/com/yahoo/searchlib/tensor/TensorConformanceTest.java
index 27aaeb776e4..dde9d4bf21e 100644
--- a/searchlib/src/test/java/com/yahoo/searchlib/tensor/TensorConformanceTest.java
+++ b/searchlib/src/test/java/com/yahoo/searchlib/tensor/TensorConformanceTest.java
@@ -18,6 +18,7 @@ import org.junit.Test;
import java.io.BufferedReader;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
@@ -51,32 +52,32 @@ public class TensorConformanceTest {
count++;
}
}
- if (failList.size() > 0) {
- System.out.println("Conformance test fails:");
- System.out.println(failList);
- }
-
- // Disable this for now:
- //assertEquals(0, failList.size());
+ assertEquals(failList.size() + " conformance test fails: " + failList, 0, failList.size());
}
- private boolean testCase(String test, int count) throws IOException {
+ private boolean testCase(String test, int count) {
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(test);
+
if (node.has("num_tests")) {
Assert.assertEquals(node.get("num_tests").asInt(), count);
- } else if (node.has("expression")) {
- String expression = node.get("expression").asText();
- MapContext context = getInput(node.get("inputs"));
- Tensor expect = getTensor(node.get("result").get("expect").asText());
- Tensor result = evaluate(expression, context);
- boolean equals = Tensor.equals(result, expect);
- if (!equals) {
- System.out.println(count + " : Tensors not equal. Result: " + result.toString() + " Expected: " + expect.toString() + " -> expression \"" + expression + "\"");
- }
- return Tensor.equals(result, expect);
+ return true;
+ }
+ if (!node.has("expression")) {
+ return true; // ignore
}
+
+ String expression = node.get("expression").asText();
+ MapContext context = getInput(node.get("inputs"));
+ Tensor expect = getTensor(node.get("result").get("expect").asText());
+ Tensor result = evaluate(expression, context);
+ boolean equals = Tensor.equals(result, expect);
+ if (!equals) {
+ System.out.println(count + " : Tensors not equal. Result: " + result.toString() + " Expected: " + expect.toString() + " -> expression \"" + expression + "\"");
+ }
+ return equals;
+
} catch (Exception e) {
System.out.println(count + " : " + e.toString());
}
@@ -133,22 +134,5 @@ public class TensorConformanceTest {
throw new IllegalArgumentException("Hex contains illegal characters");
}
- private static String valueType(Value value) {
- if (value instanceof StringValue) {
- return "string";
- }
- if (value instanceof BooleanValue) {
- return "boolean";
- }
- if (value instanceof DoubleCompatibleValue) {
- return "double";
- }
- if (value instanceof TensorValue) {
- return ((TensorValue)value).asTensor().type().toString();
- }
- return "unknown";
- }
-
-
}
diff --git a/searchlib/src/tests/rankingexpression/rankingexpressionlist b/searchlib/src/tests/rankingexpression/rankingexpressionlist
index 327f2b161cd..77b2294c668 100644
--- a/searchlib/src/tests/rankingexpression/rankingexpressionlist
+++ b/searchlib/src/tests/rankingexpression/rankingexpressionlist
@@ -160,3 +160,7 @@ mysum ( mysum(4, 4), value( 4 ), value(4) ); mysum(mysum(4,4),value(4),value(4)
"1008\x1977"
"100819\x77"
if(1.09999~=1.1,2,3); if (1.09999 ~= 1.1, 2, 3)
+10 % 3
+1 && 0 || 1
+!a && (a || a)
+10 ^ 3
diff --git a/storage/src/tests/distributor/statecheckerstest.cpp b/storage/src/tests/distributor/statecheckerstest.cpp
index e71525d5dd6..865d869761d 100644
--- a/storage/src/tests/distributor/statecheckerstest.cpp
+++ b/storage/src/tests/distributor/statecheckerstest.cpp
@@ -826,7 +826,7 @@ StateCheckersTest::testSynchronizeAndMove()
runAndVerify<SynchronizeAndMoveStateChecker>(
CheckerParams()
.expect("[Moving bucket to ideal node 3] "
- "(scheduling pri VERY_LOW)")
+ "(scheduling pri LOW)")
.bucketInfo("0=1,1=1,2=1")
.clusterState("distributor:1 storage:4")
.includeSchedulingPriority(true));
@@ -843,7 +843,7 @@ StateCheckersTest::testSynchronizeAndMove()
CheckerParams()
.expect("[Moving bucket to ideal node 1]"
"[Moving bucket to ideal node 3] (pri 165) "
- "(scheduling pri VERY_LOW)")
+ "(scheduling pri LOW)")
.clusterState("distributor:1 storage:5")
.bucketInfo("0=1,4=1,5=1")
.includeMessagePriority(true)
@@ -1540,7 +1540,7 @@ StateCheckersTest::testGarbageCollection()
void StateCheckersTest::gc_ops_are_prioritized_with_low_priority_category() {
CPPUNIT_ASSERT_EQUAL(
std::string("[Needs garbage collection: Last check at 3, current time 4000, "
- "configured interval 300] (scheduling pri LOW)"),
+ "configured interval 300] (scheduling pri VERY_LOW)"),
testGarbageCollection(3, 4000, 300, 1, false, true));
}
diff --git a/storage/src/vespa/storage/common/bucketmessages.cpp b/storage/src/vespa/storage/common/bucketmessages.cpp
index 1d9d64ad24f..3157bad49e5 100644
--- a/storage/src/vespa/storage/common/bucketmessages.cpp
+++ b/storage/src/vespa/storage/common/bucketmessages.cpp
@@ -39,6 +39,12 @@ ReadBucketListReply::ReadBucketListReply(const ReadBucketList& cmd)
ReadBucketListReply::~ReadBucketListReply() { }
+document::Bucket
+ReadBucketListReply::getBucket() const
+{
+ return document::Bucket(_bucketSpace, document::BucketId());
+}
+
void
ReadBucketListReply::print(std::ostream& out, bool verbose, const std::string& indent) const
{
diff --git a/storage/src/vespa/storage/common/bucketmessages.h b/storage/src/vespa/storage/common/bucketmessages.h
index 0ff7a22aa4d..941928b1064 100644
--- a/storage/src/vespa/storage/common/bucketmessages.h
+++ b/storage/src/vespa/storage/common/bucketmessages.h
@@ -55,6 +55,7 @@ public:
document::BucketSpace getBucketSpace() const { return _bucketSpace; }
spi::PartitionId getPartition() const { return _partition; }
+ document::Bucket getBucket() const override;
spi::BucketIdListResult::List& getBuckets() { return _buckets; }
const spi::BucketIdListResult::List& getBuckets() const {
diff --git a/storage/src/vespa/storage/distributor/statecheckers.cpp b/storage/src/vespa/storage/distributor/statecheckers.cpp
index 49e9ba9f1c4..1f0cb19ef93 100644
--- a/storage/src/vespa/storage/distributor/statecheckers.cpp
+++ b/storage/src/vespa/storage/distributor/statecheckers.cpp
@@ -849,7 +849,7 @@ SynchronizeAndMoveStateChecker::check(StateChecker::Context& c)
op->setPriority(result.priority());
op->setDetailedReason(result.reason());
MaintenancePriority::Priority schedPri(
- result.needsMoveOnly() ? MaintenancePriority::VERY_LOW
+ result.needsMoveOnly() ? MaintenancePriority::LOW
: MaintenancePriority::MEDIUM);
return Result::createStoredResult(std::move(op), schedPri);
@@ -1142,7 +1142,7 @@ GarbageCollectionStateChecker::check(Context& c)
op->setPriority(c.distributorConfig.getMaintenancePriorities()
.garbageCollection);
op->setDetailedReason(reason.c_str());
- return Result::createStoredResult(std::move(op), MaintenancePriority::LOW);
+ return Result::createStoredResult(std::move(op), MaintenancePriority::VERY_LOW);
} else {
return Result::noMaintenanceNeeded();
}
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
index e32942d0303..d1e5783e609 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization.h
@@ -1,6 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
+#include <vespa/document/bucket/bucket.h>
#include <vespa/document/repo/documenttyperepo.h>
#include <vespa/messagebus/routable.h>
#include <vespa/storageapi/mbusprot/storagemessage.h>
@@ -176,6 +177,10 @@ protected:
virtual SCmd::UP onDecodeBatchPutRemoveCommand(BBuf&) const = 0;
virtual SRep::UP onDecodeBatchPutRemoveReply(const SCmd&, BBuf&) const = 0;
+ virtual document::Bucket getBucket(document::ByteBuffer& buf) const = 0;
+ virtual void putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const = 0;
+ virtual document::BucketSpace getBucketSpace(document::ByteBuffer& buf) const = 0;
+ virtual void putBucketSpace(document::BucketSpace bucketSpace, vespalib::GrowableByteBuffer& buf) const = 0;
virtual api::BucketInfo getBucketInfo(document::ByteBuffer& buf) const = 0;
virtual void putBucketInfo(const api::BucketInfo& info, vespalib::GrowableByteBuffer& buf) const = 0;
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
index e4993a1ee7b..cd8e4992ba5 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization4_2.cpp
@@ -41,7 +41,7 @@ void ProtocolSerialization4_2::onEncode(
char* pos = buf.allocate(docBlockSize);
vdslib::DocumentList copy(msg.getOperations(), pos, docBlockSize);
buf.putBoolean(msg.keepTimeStamps());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
}
@@ -52,8 +52,7 @@ ProtocolSerialization4_2::onDecodeMultiOperationCommand(BBuf& buf) const
std::vector<char> buffer(length);
buf.getBytes(&buffer[0], length);
bool keepTimestamps = SH::getBoolean(buf);
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::MultiOperationCommand::UP msg(
new api::MultiOperationCommand(getTypeRepoSp(),
bucket, buffer, keepTimestamps));
@@ -67,7 +66,7 @@ ProtocolSerialization4_2::onEncode(
{
// Serialization format - allow different types of serialization depending on source.
buf.putByte(0);
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putInt(msg.getOperationCount());
for (uint32_t i = 0; i < msg.getOperationCount(); i++) {
@@ -101,8 +100,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeBatchPutRemoveCommand(BBuf& buf) const
{
SH::getByte(buf);
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
std::unique_ptr<api::BatchPutRemoveCommand> cmd(new api::BatchPutRemoveCommand(bucket));
int length = SH::getInt(buf);
@@ -164,7 +162,7 @@ void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::GetCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getBeforeTimestamp());
buf.putBoolean(msg.getFieldSet() == "[header]");
onEncodeCommand(buf, msg);
@@ -174,8 +172,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeGetCommand(BBuf& buf) const
{
document::DocumentId did(SH::getString(buf));
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::Timestamp beforeTimestamp(SH::getLong(buf));
bool headerOnly(SH::getBoolean(buf));
api::GetCommand::UP msg(
@@ -188,7 +185,7 @@ void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::RemoveCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getTimestamp());
onEncodeBucketInfoCommand(buf, msg);
}
@@ -197,8 +194,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeRemoveCommand(BBuf& buf) const
{
document::DocumentId did(SH::getString(buf));
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::Timestamp timestamp(SH::getLong(buf));
api::RemoveCommand::UP msg(new api::RemoveCommand(bucket, did, timestamp));
onDecodeBucketInfoCommand(buf, *msg);
@@ -208,7 +204,7 @@ ProtocolSerialization4_2::onDecodeRemoveCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::RevertCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putInt(msg.getRevertTokens().size());
for (uint32_t i=0, n=msg.getRevertTokens().size(); i<n; ++i) {
buf.putLong(msg.getRevertTokens()[i]);
@@ -219,8 +215,7 @@ void ProtocolSerialization4_2::onEncode(
api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeRevertCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
std::vector<api::Timestamp> tokens(SH::getInt(buf));
for (uint32_t i=0, n=tokens.size(); i<n; ++i) {
tokens[i] = SH::getLong(buf);
@@ -233,15 +228,14 @@ ProtocolSerialization4_2::onDecodeRevertCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::CreateBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
}
api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeCreateBucketCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::CreateBucketCommand::UP msg(new api::CreateBucketCommand(bucket));
onDecodeBucketInfoCommand(buf, *msg);
return api::StorageCommand::UP(msg.release());
@@ -250,7 +244,7 @@ ProtocolSerialization4_2::onDecodeCreateBucketCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::MergeBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
buf.putShort(nodes.size());
for (uint32_t i=0; i<nodes.size(); ++i) {
@@ -265,8 +259,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeMergeBucketCommand(BBuf& buf) const
{
typedef api::MergeBucketCommand::Node Node;
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
uint16_t nodeCount = SH::getShort(buf);
std::vector<Node> nodes;
nodes.reserve(nodeCount);
@@ -285,7 +278,7 @@ ProtocolSerialization4_2::onDecodeMergeBucketCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::GetBucketDiffCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
buf.putShort(nodes.size());
for (uint32_t i=0; i<nodes.size(); ++i) {
@@ -305,8 +298,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeGetBucketDiffCommand(BBuf& buf) const
{
typedef api::MergeBucketCommand::Node Node;
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
uint16_t nodeCount = SH::getShort(buf);
std::vector<Node> nodes;
nodes.reserve(nodeCount);
@@ -335,7 +327,7 @@ ProtocolSerialization4_2::onDecodeGetBucketDiffCommand(BBuf& buf) const
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::ApplyBucketDiffCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
const std::vector<api::MergeBucketCommand::Node>& nodes(msg.getNodes());
buf.putShort(nodes.size());
for (uint32_t i=0; i<nodes.size(); ++i) {
@@ -363,8 +355,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeApplyBucketDiffCommand(BBuf& buf) const
{
typedef api::MergeBucketCommand::Node Node;
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
uint16_t nodeCount = SH::getShort(buf);
std::vector<Node> nodes;
nodes.reserve(nodeCount);
@@ -440,7 +431,7 @@ ProtocolSerialization4_2::onDecodeRequestBucketInfoReply(const SCmd& cmd,
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::NotifyBucketChangeCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
putBucketInfo(msg.getBucketInfo(), buf);
onEncodeCommand(buf, msg);
}
@@ -448,8 +439,7 @@ void ProtocolSerialization4_2::onEncode(
api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeNotifyBucketChangeCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::BucketInfo info(getBucketInfo(buf));
api::NotifyBucketChangeCommand::UP msg(
new api::NotifyBucketChangeCommand(bucket, info));
@@ -476,7 +466,7 @@ ProtocolSerialization4_2::onDecodeNotifyBucketChangeReply(const SCmd& cmd,
void ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::SplitBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putByte(msg.getMinSplitBits());
buf.putByte(msg.getMaxSplitBits());
buf.putInt(msg.getMinByteSize());
@@ -487,8 +477,7 @@ void ProtocolSerialization4_2::onEncode(
api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeSplitBucketCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::SplitBucketCommand::UP msg(new api::SplitBucketCommand(bucket));
msg->setMinSplitBits(SH::getByte(buf));
msg->setMaxSplitBits(SH::getByte(buf));
@@ -531,6 +520,7 @@ void
ProtocolSerialization4_2::onEncode(
GBBuf& buf, const api::CreateVisitorCommand& msg) const
{
+ putBucketSpace(msg.getBucketSpace(), buf);
buf.putString(msg.getLibraryName());
buf.putString(msg.getInstanceId());
buf.putString(msg.getDocumentSelection());
@@ -562,7 +552,7 @@ ProtocolSerialization4_2::onEncode(
api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeCreateVisitorCommand(BBuf& buf) const
{
- BucketSpace bucketSpace(BucketSpace::placeHolder());
+ BucketSpace bucketSpace = getBucketSpace(buf);
vespalib::stringref libraryName = SH::getString(buf);
vespalib::stringref instanceId = SH::getString(buf);
vespalib::stringref selection = SH::getString(buf);
@@ -638,7 +628,7 @@ void
ProtocolSerialization4_2::onEncode(GBBuf& buf, const api::RemoveLocationCommand& msg) const
{
buf.putString(msg.getDocumentSelection());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeCommand(buf, msg);
}
@@ -646,8 +636,7 @@ api::StorageCommand::UP
ProtocolSerialization4_2::onDecodeRemoveLocationCommand(BBuf& buf) const
{
vespalib::stringref documentSelection = SH::getString(buf);
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::RemoveLocationCommand::UP msg;
msg.reset(new api::RemoveLocationCommand(documentSelection, bucket));
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
index 22f58ebc58b..d6d47d877e5 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.cpp
@@ -12,6 +12,30 @@ using document::BucketSpace;
namespace storage {
namespace mbusprot {
+document::Bucket
+ProtocolSerialization5_0::getBucket(document::ByteBuffer& buf) const
+{
+ document::BucketId bucketId(SH::getLong(buf));
+ return document::Bucket(BucketSpace::placeHolder(), bucketId);
+}
+
+void
+ProtocolSerialization5_0::putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const
+{
+ buf.putLong(bucket.getBucketId().getRawId());
+}
+
+document::BucketSpace
+ProtocolSerialization5_0::getBucketSpace(document::ByteBuffer&) const
+{
+ return BucketSpace::placeHolder();
+}
+
+void
+ProtocolSerialization5_0::putBucketSpace(document::BucketSpace, vespalib::GrowableByteBuffer&) const
+{
+}
+
api::BucketInfo
ProtocolSerialization5_0::getBucketInfo(document::ByteBuffer& buf) const
{
@@ -93,7 +117,7 @@ void ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::PutCommand& msg) const
{
SH::putDocument(msg.getDocument().get(), buf);
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getTimestamp());
buf.putLong(msg.getUpdateTimestamp());
onEncodeBucketInfoCommand(buf, msg);
@@ -103,8 +127,7 @@ api::StorageCommand::UP
ProtocolSerialization5_0::onDecodePutCommand(BBuf& buf) const
{
document::Document::SP doc(SH::getDocument(buf, getTypeRepo()));
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::Timestamp ts(SH::getLong(buf));
api::PutCommand::UP msg(new api::PutCommand(bucket, doc, ts));
msg->setUpdateTimestamp(SH::getLong(buf));
@@ -203,7 +226,7 @@ void ProtocolSerialization5_0::onEncode(
buf.putInt(0);
}
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getTimestamp());
buf.putLong(msg.getOldTimestamp());
onEncodeBucketInfoCommand(buf, msg);
@@ -224,8 +247,7 @@ ProtocolSerialization5_0::onDecodeUpdateCommand(BBuf& buf) const
SERIALIZE_HEAD));
}
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::Timestamp timestamp(SH::getLong(buf));
api::UpdateCommand::UP msg(
new api::UpdateCommand(bucket, update, timestamp));
@@ -270,7 +292,7 @@ void
ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::DeleteBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
onEncodeBucketInfoCommand(buf, msg);
putBucketInfo(msg.getBucketInfo(), buf);
}
@@ -278,8 +300,7 @@ ProtocolSerialization5_0::onEncode(
api::StorageCommand::UP
ProtocolSerialization5_0::onDecodeDeleteBucketCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::DeleteBucketCommand::UP msg(new api::DeleteBucketCommand(bucket));
onDecodeBucketInfoCommand(buf, *msg);
if (buf.getRemaining() >= SH::BUCKET_INFO_SERIALIZED_SIZE) {
@@ -495,7 +516,7 @@ void
ProtocolSerialization5_0::onEncode(
GBBuf& buf, const api::JoinBucketsCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putInt(msg.getSourceBuckets().size());
for (uint32_t i=0, n=msg.getSourceBuckets().size(); i<n; ++i) {
buf.putLong(msg.getSourceBuckets()[i].getRawId());
@@ -507,8 +528,7 @@ ProtocolSerialization5_0::onEncode(
api::StorageCommand::UP
ProtocolSerialization5_0::onDecodeJoinBucketsCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::JoinBucketsCommand::UP msg(new api::JoinBucketsCommand(bucket));
uint32_t size = SH::getInt(buf);
if (size > buf.getRemaining()) {
@@ -621,6 +641,7 @@ void ProtocolSerialization5_0::onEncode(
for (uint32_t i=0; i<buckets.size(); ++i) {
buf.putLong(buckets[i].getRawId());
}
+ putBucketSpace(msg.getBucketSpace(), buf);
if (buckets.size() == 0) {
buf.putShort(msg.getDistributor());
buf.putString(msg.getSystemState().toString());
@@ -638,7 +659,7 @@ ProtocolSerialization5_0::onDecodeRequestBucketInfoCommand(BBuf& buf) const
buckets[i] = document::BucketId(SH::getLong(buf));
}
api::RequestBucketInfoCommand::UP msg;
- BucketSpace bucketSpace(BucketSpace::placeHolder());
+ BucketSpace bucketSpace = getBucketSpace(buf);
if (buckets.size() != 0) {
msg.reset(new api::RequestBucketInfoCommand(bucketSpace, buckets));
} else {
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
index ff9f08d38a9..c1285939a1c 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_0.h
@@ -15,6 +15,10 @@ public:
ProtocolSerialization5_0(const document::DocumentTypeRepo::SP&,
const documentapi::LoadTypeSet& loadTypes);
+ document::Bucket getBucket(document::ByteBuffer& buf) const override;
+ void putBucket(const document::Bucket& bucket, vespalib::GrowableByteBuffer& buf) const override;
+ document::BucketSpace getBucketSpace(document::ByteBuffer& buf) const override;
+ void putBucketSpace(document::BucketSpace bucketSpace, vespalib::GrowableByteBuffer& buf) const override;
api::BucketInfo getBucketInfo(document::ByteBuffer& buf) const override;
void putBucketInfo(const api::BucketInfo& info, vespalib::GrowableByteBuffer& buf) const override;
diff --git a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
index dc97742b733..0afdfebd5b7 100644
--- a/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
+++ b/storageapi/src/vespa/storageapi/mbusprot/protocolserialization5_1.cpp
@@ -64,7 +64,7 @@ ProtocolSerialization5_1::ProtocolSerialization5_1(
void ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::SetBucketStateCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putByte(static_cast<uint8_t>(msg.getState()));
onEncodeCommand(buf, msg);
}
@@ -72,8 +72,7 @@ void ProtocolSerialization5_1::onEncode(
api::StorageCommand::UP
ProtocolSerialization5_1::onDecodeSetBucketStateCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::SetBucketStateCommand::BUCKET_STATE state(
static_cast<api::SetBucketStateCommand::BUCKET_STATE>(
SH::getByte(buf)));
@@ -103,7 +102,7 @@ void ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::GetCommand& msg) const
{
buf.putString(msg.getDocumentId().toString());
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putLong(msg.getBeforeTimestamp());
buf.putString(msg.getFieldSet());
onEncodeCommand(buf, msg);
@@ -113,8 +112,7 @@ api::StorageCommand::UP
ProtocolSerialization5_1::onDecodeGetCommand(BBuf& buf) const
{
document::DocumentId did(SH::getString(buf));
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
api::Timestamp beforeTimestamp(SH::getLong(buf));
std::string fieldSet(SH::getString(buf));
api::GetCommand::UP msg(
@@ -127,6 +125,7 @@ void
ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::CreateVisitorCommand& msg) const
{
+ putBucketSpace(msg.getBucketSpace(), buf);
buf.putString(msg.getLibraryName());
buf.putString(msg.getInstanceId());
buf.putString(msg.getDocumentSelection());
@@ -161,7 +160,7 @@ ProtocolSerialization5_1::onEncode(
api::StorageCommand::UP
ProtocolSerialization5_1::onDecodeCreateVisitorCommand(BBuf& buf) const
{
- BucketSpace bucketSpace(BucketSpace::placeHolder());
+ BucketSpace bucketSpace = getBucketSpace(buf);
vespalib::stringref libraryName = SH::getString(buf);
vespalib::stringref instanceId = SH::getString(buf);
vespalib::stringref selection = SH::getString(buf);
@@ -208,7 +207,7 @@ ProtocolSerialization5_1::onDecodeCreateVisitorCommand(BBuf& buf) const
void ProtocolSerialization5_1::onEncode(
GBBuf& buf, const api::CreateBucketCommand& msg) const
{
- buf.putLong(msg.getBucketId().getRawId());
+ putBucket(msg.getBucket(), buf);
buf.putBoolean(msg.getActive());
onEncodeBucketInfoCommand(buf, msg);
}
@@ -216,8 +215,7 @@ void ProtocolSerialization5_1::onEncode(
api::StorageCommand::UP
ProtocolSerialization5_1::onDecodeCreateBucketCommand(BBuf& buf) const
{
- document::BucketId bucketId(SH::getLong(buf));
- document::Bucket bucket(BucketSpace::placeHolder(), bucketId);
+ document::Bucket bucket = getBucket(buf);
bool setActive = SH::getBoolean(buf);
api::CreateBucketCommand::UP msg(new api::CreateBucketCommand(bucket));
msg->setActive(setActive);
diff --git a/storageapi/src/vespa/storageapi/message/bucket.cpp b/storageapi/src/vespa/storageapi/message/bucket.cpp
index 18ad95c2c02..0961a8f6edc 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.cpp
+++ b/storageapi/src/vespa/storageapi/message/bucket.cpp
@@ -475,6 +475,12 @@ RequestBucketInfoCommand::RequestBucketInfoCommand(
{
}
+document::Bucket
+RequestBucketInfoCommand::getBucket() const
+{
+ return document::Bucket(_bucketSpace, document::BucketId());
+}
+
void
RequestBucketInfoCommand::print(std::ostream& out, bool verbose,
const std::string& indent) const
diff --git a/storageapi/src/vespa/storageapi/message/bucket.h b/storageapi/src/vespa/storageapi/message/bucket.h
index 05838600a24..5fba1a3bf65 100644
--- a/storageapi/src/vespa/storageapi/message/bucket.h
+++ b/storageapi/src/vespa/storageapi/message/bucket.h
@@ -363,6 +363,7 @@ public:
const vespalib::string& getDistributionHash() const { return _distributionHash; }
document::BucketSpace getBucketSpace() const { return _bucketSpace; }
+ document::Bucket getBucket() const override;
void print(std::ostream& out, bool verbose, const std::string& indent) const override;
diff --git a/storageapi/src/vespa/storageapi/message/visitor.cpp b/storageapi/src/vespa/storageapi/message/visitor.cpp
index 7b5a614bd3e..3cb6f72d5d9 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.cpp
+++ b/storageapi/src/vespa/storageapi/message/visitor.cpp
@@ -68,6 +68,12 @@ CreateVisitorCommand::CreateVisitorCommand(const CreateVisitorCommand& o)
CreateVisitorCommand::~CreateVisitorCommand() {}
+document::Bucket
+CreateVisitorCommand::getBucket() const
+{
+ return document::Bucket(_bucketSpace, document::BucketId());
+}
+
void
CreateVisitorCommand::print(std::ostream& out, bool verbose,
const std::string& indent) const
diff --git a/storageapi/src/vespa/storageapi/message/visitor.h b/storageapi/src/vespa/storageapi/message/visitor.h
index f252ecd344f..e1850686222 100644
--- a/storageapi/src/vespa/storageapi/message/visitor.h
+++ b/storageapi/src/vespa/storageapi/message/visitor.h
@@ -86,6 +86,7 @@ public:
VisitorId getVisitorId() const { return _visitorId; }
uint32_t getVisitorCmdId() const { return _visitorCmdId; }
document::BucketSpace getBucketSpace() const { return _bucketSpace; }
+ document::Bucket getBucket() const override;
const vespalib::string & getLibraryName() const { return _libName; }
const vespalib::string & getInstanceId() const { return _instanceId; }
const vespalib::string & getControlDestination() const