From 71e0637d7512fe183ed915c8104ff9fb75221eda Mon Sep 17 00:00:00 2001 From: Tor Brede Vekterli Date: Wed, 5 Dec 2018 11:25:56 +0100 Subject: Inject RestApi ClusterListConfig instead of fetching it every time --- .../yahoo/document/restapi/OperationHandlerImpl.java | 4 ++-- .../com/yahoo/document/restapi/resource/RestApi.java | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'vespaclient-container-plugin') 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 clusters = Collections.unmodifiableList(new ClusterList(config).getStorageClusters()); + return () -> clusters; + } + private static Optional requestProperty(String parameter, HttpRequest request) { final String property = request.getProperty(parameter); if (property != null && ! property.isEmpty()) { -- cgit v1.2.3