aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-08-11 14:22:52 +0200
committerjonmv <venstad@gmail.com>2022-08-11 14:22:52 +0200
commit1559a5a3df5edc438a9f6315a3240a7668e336fa (patch)
treebd5b6828b63c02fa825b538aebc3ef5517722cf5
parent5fec3608e404237ac006b59a4acf41bcfb1353dc (diff)
Disallow dryRun at other paths, and update abi spec
-rw-r--r--vespa-feed-client-api/abi-spec.json1
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java5
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java18
3 files changed, 21 insertions, 3 deletions
diff --git a/vespa-feed-client-api/abi-spec.json b/vespa-feed-client-api/abi-spec.json
index 5bd0acf82d3..a41932323b5 100644
--- a/vespa-feed-client-api/abi-spec.json
+++ b/vespa-feed-client-api/abi-spec.json
@@ -137,6 +137,7 @@
"public abstract ai.vespa.feed.client.FeedClientBuilder setCertificate(java.util.Collection, java.security.PrivateKey)",
"public abstract ai.vespa.feed.client.FeedClientBuilder setCertificate(java.security.cert.X509Certificate, java.security.PrivateKey)",
"public abstract ai.vespa.feed.client.FeedClientBuilder setDryrun(boolean)",
+ "public abstract ai.vespa.feed.client.FeedClientBuilder setSpeedTest(boolean)",
"public abstract ai.vespa.feed.client.FeedClientBuilder setCaCertificatesFile(java.nio.file.Path)",
"public abstract ai.vespa.feed.client.FeedClientBuilder setCaCertificates(java.util.Collection)",
"public abstract ai.vespa.feed.client.FeedClientBuilder setEndpointUris(java.util.List)",
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
index 26ef157c5ae..c72bc1ef4c5 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java
@@ -362,6 +362,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel getDocuments(HttpRequest request, DocumentPath path, ResponseHandler handler) {
+ disallow(request, DRY_RUN);
enqueueAndDispatch(request, handler, () -> {
boolean streamed = getProperty(request, STREAM, booleanParser).orElse(false);
VisitorParameters parameters = parseGetParameters(request, path, streamed);
@@ -374,6 +375,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel postDocuments(HttpRequest request, DocumentPath path, ResponseHandler handler) {
+ disallow(request, DRY_RUN);
enqueueAndDispatch(request, handler, () -> {
StorageCluster destination = resolveCluster(Optional.of(requireProperty(request, DESTINATION_CLUSTER)), clusters);
VisitorParameters parameters = parseParameters(request, path);
@@ -388,6 +390,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel putDocuments(HttpRequest request, DocumentPath path, ResponseHandler handler) {
+ disallow(request, DRY_RUN);
return new ForwardingContentChannel(in -> {
enqueueAndDispatch(request, handler, () -> {
StorageCluster cluster = resolveCluster(Optional.of(requireProperty(request, CLUSTER)), clusters);
@@ -406,6 +409,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel deleteDocuments(HttpRequest request, DocumentPath path, ResponseHandler handler) {
+ disallow(request, DRY_RUN);
enqueueAndDispatch(request, handler, () -> {
VisitorParameters parameters = parseParameters(request, path);
parameters.setFieldSet(DocIdOnly.NAME);
@@ -420,6 +424,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler {
}
private ContentChannel getDocument(HttpRequest request, DocumentPath path, ResponseHandler handler) {
+ disallow(request, DRY_RUN);
enqueueAndDispatch(request, handler, () -> {
DocumentOperationParameters rawParameters = parametersFromRequest(request, CLUSTER, FIELD_SET);
if (rawParameters.fieldSet().isEmpty())
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
index baedae5f580..7f77ce9d0d5 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/document/restapi/resource/DocumentV1ApiTest.java
@@ -524,7 +524,19 @@ public class DocumentV1ApiTest {
"}", response.readAll());
assertEquals(404, response.getStatus());
- // POST with speedTest=true returns an immediate OK response
+ // GET with dryRun=true is an error
+ access.session.expect((__, ___) -> {
+ fail("Should not cause an actual feed operation");
+ return null;
+ });
+ response = driver.sendRequest("http://localhost/document/v1/space/music/number/1/two?dryRun=true");
+ assertSameJson("{" +
+ " \"pathId\": \"/document/v1/space/music/number/1/two\"," +
+ " \"message\": \"May not specify 'dryRun' at '/document/v1/space/music/number/1/two'\"\n" +
+ "}", response.readAll());
+ assertEquals(400, response.getStatus());
+
+ // POST with dryRun=true returns an immediate OK response
access.session.expect((__, ___) -> {
fail("Should not cause an actual feed operation");
return null;
@@ -537,7 +549,7 @@ public class DocumentV1ApiTest {
"}", response.readAll());
assertEquals(200, response.getStatus());
- // PUT with speedTest=true returns an immediate OK response
+ // PUT with dryRun=true returns an immediate OK response
access.session.expect((__, ___) -> {
fail("Should not cause an actual feed operation");
return null;
@@ -550,7 +562,7 @@ public class DocumentV1ApiTest {
"}", response.readAll());
assertEquals(200, response.getStatus());
- // DELETE with speedTest=true returns an immediate OK response
+ // DELETE with dryRun=true returns an immediate OK response
access.session.expect((__, ___) -> {
fail("Should not cause an actual feed operation");
return null;