diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2021-01-05 12:29:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-05 12:29:17 +0100 |
commit | 75b2e4c11ea6463c335f1c77dab3fdb5493e5600 (patch) | |
tree | 1c01f7e4d6492ed9e508d8841f975e2c1fc177c6 /vespaclient-container-plugin | |
parent | 25f217ff7f0c4f8ae921b71788a083c6b6acf2cc (diff) |
Revert "Jonmv/remove storage policy"
Diffstat (limited to 'vespaclient-container-plugin')
2 files changed, 17 insertions, 8 deletions
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 2988ce07ae6..5a370209f1c 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 @@ -377,6 +377,10 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { .map(parameters::withRoute) .orElse(parameters); break; + case CONDITION: + parameters = getProperty(request, ROUTE).map(parameters::withRoute) + .orElse(parameters); + break; case FIELD_SET: parameters = getProperty(request, FIELD_SET).map(parameters::withFieldSet) .orElse(parameters); @@ -698,7 +702,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { this.reader = reader; } - /** Write is complete when we have stored the buffer — call completion handler. */ + /** Write is complete when we have stored the buffer — call completion handler. */ @Override public void write(ByteBuffer buf, CompletionHandler handler) { try { @@ -944,15 +948,18 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { static class StorageCluster { private final String name; + private final String configId; private final Map<String, String> documentBuckets; - StorageCluster(String name, Map<String, String> documentBuckets) { + StorageCluster(String name, String configId, Map<String, String> documentBuckets) { this.name = requireNonNull(name); + this.configId = requireNonNull(configId); this.documentBuckets = Map.copyOf(documentBuckets); } String name() { return name; } - String route() { return name() + "-direct"; } + String configId() { return configId; } + String route() { return "[Storage:cluster=" + name() + ";clusterconfigid=" + configId() + "]"; } Optional<String> bucketOf(String documentType) { return Optional.ofNullable(documentBuckets.get(documentType)); } } @@ -961,6 +968,7 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { return clusters.storage().stream() .collect(toUnmodifiableMap(storage -> storage.name(), storage -> new StorageCluster(storage.name(), + storage.configid(), buckets.cluster(storage.name()) .documentType().entrySet().stream() .collect(toMap(entry -> entry.getKey(), 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 2b47f9c92c2..826821981ba 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 @@ -113,6 +113,7 @@ public class DocumentV1ApiTest { } final Map<String, StorageCluster> clusters = Map.of("content", new StorageCluster("content", + "config-id", Map.of("music", "default"))); ManualClock clock; MockDocumentAccess access; @@ -138,7 +139,7 @@ public class DocumentV1ApiTest { public void testResolveCluster() { assertEquals("content", DocumentV1ApiHandler.resolveCluster(Optional.empty(), clusters).name()); - assertEquals("content-direct", + assertEquals("[Storage:cluster=content;clusterconfigid=config-id]", DocumentV1ApiHandler.resolveCluster(Optional.of("content"), clusters).route()); try { DocumentV1ApiHandler.resolveCluster(Optional.empty(), Map.of()); @@ -156,8 +157,8 @@ public class DocumentV1ApiTest { } try { Map<String, StorageCluster> twoClusters = new TreeMap<>(); - twoClusters.put("one", new StorageCluster("one", Map.of())); - twoClusters.put("two", new StorageCluster("two", Map.of())); + twoClusters.put("one", new StorageCluster("one", "one-config", Map.of())); + twoClusters.put("two", new StorageCluster("two", "two-config", Map.of())); DocumentV1ApiHandler.resolveCluster(Optional.empty(), twoClusters); fail("More than one cluster and no document type should fail"); } @@ -192,7 +193,7 @@ public class DocumentV1ApiTest { // GET at root is a visit. Numeric parameters have an upper bound. access.expect(parameters -> { - assertEquals("content-direct", parameters.getRoute().toString()); + assertEquals("[Storage:cluster=content;clusterconfigid=config-id]", parameters.getRoute().toString()); assertEquals("default", parameters.getBucketSpace()); assertEquals(1024, parameters.getMaxTotalHits()); assertEquals(100, ((StaticThrottlePolicy) parameters.getThrottlePolicy()).getMaxPendingCount()); @@ -274,7 +275,7 @@ public class DocumentV1ApiTest { // GET with full document ID is a document get operation which returns 404 when no document is found access.session.expect((id, parameters) -> { assertEquals(doc1.getId(), id); - assertEquals(parameters().withRoute("content-direct").withFieldSet("go"), parameters); + assertEquals(parameters().withRoute("[Storage:cluster=content;clusterconfigid=config-id]").withFieldSet("go"), parameters); parameters.responseHandler().get().handleResponse(new DocumentResponse(0, null)); return new Result(Result.ResultType.SUCCESS, null); }); |