summaryrefslogtreecommitdiffstats
path: root/vespaclient-container-plugin
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@oath.com>2018-12-05 11:25:56 +0100
committerTor Brede Vekterli <vekterli@oath.com>2018-12-05 11:25:56 +0100
commit71e0637d7512fe183ed915c8104ff9fb75221eda (patch)
tree30052c87c86442fb3caa7011f0d820d009fa4436 /vespaclient-container-plugin
parente4ef7cd3aea8c2082d93ac00b1552de35e1012c5 (diff)
Inject RestApi ClusterListConfig instead of fetching it every time
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java4
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java17
2 files changed, 17 insertions, 4 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
index 7f7e2553b04..65e7191e164 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java
@@ -101,8 +101,8 @@ public class OperationHandlerImpl implements OperationHandler {
.get(docType));
}
- public OperationHandlerImpl(DocumentAccess documentAccess, MetricReceiver metricReceiver) {
- this(documentAccess, defaultClusterEnumerator(), defaultBucketResolver(), metricReceiver);
+ public OperationHandlerImpl(DocumentAccess documentAccess, ClusterEnumerator clusterEnumerator, MetricReceiver metricReceiver) {
+ this(documentAccess, clusterEnumerator, defaultBucketResolver(), metricReceiver);
}
public OperationHandlerImpl(DocumentAccess documentAccess, ClusterEnumerator clusterEnumerator,
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java
index 1bd4cf535c9..f088db31c23 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.inject.Inject;
import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.yahoo.cloud.config.ClusterListConfig;
import com.yahoo.container.handler.ThreadpoolConfig;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
@@ -29,11 +30,15 @@ import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
import com.yahoo.metrics.simple.MetricReceiver;
import com.yahoo.text.Text;
import com.yahoo.vespa.config.content.LoadTypeConfig;
+import com.yahoo.vespaclient.ClusterDef;
+import com.yahoo.vespaclient.ClusterList;
import com.yahoo.vespaxmlparser.VespaXMLFeedReader;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.List;
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicInteger;
@@ -70,12 +75,15 @@ public class RestApi extends LoggingRequestHandler {
@Inject
public RestApi(LoggingRequestHandler.Context parentCtx, DocumentmanagerConfig documentManagerConfig,
LoadTypeConfig loadTypeConfig, ThreadpoolConfig threadpoolConfig,
- MetricReceiver metricReceiver)
+ ClusterListConfig clusterListConfig, MetricReceiver metricReceiver)
{
super(parentCtx);
MessageBusParams params = new MessageBusParams(new LoadTypeSet(loadTypeConfig));
params.setDocumentmanagerConfig(documentManagerConfig);
- this.operationHandler = new OperationHandlerImpl(new MessageBusDocumentAccess(params), metricReceiver);
+ this.operationHandler = new OperationHandlerImpl(
+ new MessageBusDocumentAccess(params),
+ fixedClusterEnumeratorFromConfig(clusterListConfig),
+ metricReceiver);
this.singleDocumentParser = new SingleDocumentParser(new DocumentTypeManager(documentManagerConfig));
// 40% of the threads can be blocked before we deny requests.
if (threadpoolConfig != null) {
@@ -107,6 +115,11 @@ public class RestApi extends LoggingRequestHandler {
this.singleDocumentParser = new SingleDocumentParser(docTypeManager);
}
+ private static OperationHandlerImpl.ClusterEnumerator fixedClusterEnumeratorFromConfig(ClusterListConfig config) {
+ final List<ClusterDef> clusters = Collections.unmodifiableList(new ClusterList(config).getStorageClusters());
+ return () -> clusters;
+ }
+
private static Optional<String> requestProperty(String parameter, HttpRequest request) {
final String property = request.getProperty(parameter);
if (property != null && ! property.isEmpty()) {