diff options
author | jonmv <venstad@gmail.com> | 2022-08-11 14:22:52 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-08-11 14:22:52 +0200 |
commit | 1559a5a3df5edc438a9f6315a3240a7668e336fa (patch) | |
tree | bd5b6828b63c02fa825b538aebc3ef5517722cf5 | |
parent | 5fec3608e404237ac006b59a4acf41bcfb1353dc (diff) |
Disallow dryRun at other paths, and update abi spec
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; |