summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-09-28 15:00:27 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-09-28 15:00:27 +0200
commitf9dd06806afef90b069f4fa0c99f77beb040851d (patch)
treeecce12a3af04d80e5d39b0ebce919aa5c0fef81b
parent321194bbe4a36d100d92188644d90c6cf4d373c7 (diff)
Support document-api in application
-rw-r--r--application/src/main/java/com/yahoo/application/Application.java1
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationTest.java3
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java1
-rw-r--r--document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java2
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java30
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java37
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java8
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java40
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java5
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java44
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/Network.java23
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java52
-rw-r--r--messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java17
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java9
-rwxr-xr-xvespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemove.java14
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemoveLocation.java13
-rwxr-xr-xvespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerStatus.java13
-rwxr-xr-xvespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/GetSearcher.java13
-rw-r--r--vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/VisitSearcher.java12
-rw-r--r--vespaclient-container-plugin/src/test/java/com/yahoo/storage/searcher/VisitorSearcherTestCase.java9
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java14
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java12
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java12
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java12
-rwxr-xr-xvespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java10
-rw-r--r--vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java32
26 files changed, 266 insertions, 172 deletions
diff --git a/application/src/main/java/com/yahoo/application/Application.java b/application/src/main/java/com/yahoo/application/Application.java
index cc1b785ae0b..22c3a94bedc 100644
--- a/application/src/main/java/com/yahoo/application/Application.java
+++ b/application/src/main/java/com/yahoo/application/Application.java
@@ -51,6 +51,7 @@ public final class Application implements AutoCloseable {
// For internal use only
Application(Path path, Networking networking, boolean deletePathWhenClosing) {
+ System.setProperty("vespa.local", "true");
this.path = path;
this.deletePathWhenClosing = deletePathWhenClosing;
contentClusters = ContentCluster.fromPath(path);
diff --git a/application/src/test/java/com/yahoo/application/ApplicationTest.java b/application/src/test/java/com/yahoo/application/ApplicationTest.java
index 1d9dd2ec4d9..1b9815dc536 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationTest.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationTest.java
@@ -366,13 +366,12 @@ public class ApplicationTest {
}
@Test
- @Ignore // TODO: New test
public void application_with_document_api() {
String services =
"<container version='1.0'>" +
" <document-api/>" +
"</container>";
- try (Application application = Application.fromServicesXml(services, Networking.disable)) {
+ try (Application application = Application.fromServicesXml(services, Networking.enable)) {
}
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
index 2322726057e..619dd333b51 100644
--- a/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
+++ b/config/src/main/java/com/yahoo/config/subscription/ConfigSubscriber.java
@@ -27,6 +27,7 @@ import com.yahoo.vespa.config.TimingValues;
* @since 5.1
*/
public class ConfigSubscriber {
+
private Logger log = Logger.getLogger(getClass().getName());
private State state = State.OPEN;
protected List<ConfigHandle<? extends ConfigInstance>> subscriptionHandles = new ArrayList<>();
diff --git a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
index a575fbfba2a..9d7139e6226 100644
--- a/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
+++ b/document/src/main/java/com/yahoo/document/DocumentTypeManagerConfigurer.java
@@ -11,7 +11,7 @@ import java.util.ArrayList;
import java.util.logging.Logger;
/**
- * Configures the Vepsa document manager from a document id.
+ * Configures the Vespa document manager from a config id.
*
* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
*/
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java
index 0d781e4ca95..bad692f0a0d 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccess.java
@@ -41,13 +41,13 @@ import com.yahoo.config.subscription.ConfigSubscriber;
* <p>Access to this class is thread-safe.</p>
*
* @author bratseth
- * @author <a href="mailto:einarmr@yahoo-inc.com">Einar Rosenvinge</a>
- * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ * @author Einar Rosenvinge
+ * @author Simon Thoresen
*/
public abstract class DocumentAccess {
- protected DocumentTypeManager documentMgr;
- protected ConfigSubscriber documentTypeManagerConfig;
+ private final DocumentTypeManager documentTypeManager;
+ private final ConfigSubscriber documentTypeConfigSubscriber;
/**
* <p>This is a convenience method to return a document access object with
@@ -69,8 +69,14 @@ public abstract class DocumentAccess {
*/
protected DocumentAccess(DocumentAccessParams params) {
super();
- documentMgr = new DocumentTypeManager();
- documentTypeManagerConfig = DocumentTypeManagerConfigurer.configure(documentMgr, params.getDocumentManagerConfigId());
+ if (params.documentmanagerConfig().isPresent()) { // our config has been injected into the creator
+ documentTypeManager = new DocumentTypeManager(params.documentmanagerConfig().get());
+ documentTypeConfigSubscriber = null;
+ }
+ else { // fallback to old style subscription
+ documentTypeManager = new DocumentTypeManager();
+ documentTypeConfigSubscriber = DocumentTypeManagerConfigurer.configure(documentTypeManager, params.getDocumentManagerConfigId());
+ }
}
/**
@@ -154,11 +160,15 @@ public abstract class DocumentAccess {
public abstract SubscriptionSession openSubscription(SubscriptionParameters parameters);
/**
- * <p>Shuts down the underlying sessions used by this DocumentAccess;
+ * Shuts down the underlying sessions used by this DocumentAccess;
* subsequent use of this DocumentAccess will throw unspecified exceptions,
- * depending on implementation.</p>
+ * depending on implementation.
+ * Classes overriding this must call super.shutdown().
*/
- public abstract void shutdown();
+ public void shutdown() {
+ if (documentTypeConfigSubscriber != null)
+ documentTypeConfigSubscriber.close();
+ }
/**
* <p>Returns the {@link DocumentTypeManager} used by this
@@ -167,6 +177,6 @@ public abstract class DocumentAccess {
* @return The document type manager.
*/
public DocumentTypeManager getDocumentTypeManager() {
- return documentMgr;
+ return documentTypeManager;
}
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java
index 57cfdbd32e1..701fafbab06 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentAccessParams.java
@@ -1,6 +1,10 @@
-// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi;
+import com.yahoo.document.config.DocumentmanagerConfig;
+
+import java.util.Optional;
+
/**
* Superclass of the classes which contains the parameters for creating or opening a document access.
*
@@ -8,26 +12,27 @@ package com.yahoo.documentapi;
*/
public class DocumentAccessParams {
- // The id to resolve to document manager config.
+ /** The id to resolve to document manager config. Not needed if the config is passed here */
private String documentManagerConfigId = "client";
- /**
- * Returns the config id that the document manager should subscribe to.
- *
- * @return The config id.
- */
- public String getDocumentManagerConfigId() {
- return documentManagerConfigId;
- }
+ /** The document manager config, or empty if not provided (in which case a subscription must be created) */
+ private Optional<DocumentmanagerConfig> documentmanagerConfig = Optional.empty();
+
+ /** Returns the config id that the document manager should subscribe to. */
+ public String getDocumentManagerConfigId() { return documentManagerConfigId; }
+
+ /** Returns the document manager config to use, or empty if it it necessary to subscribe to get it */
+ public Optional<DocumentmanagerConfig> documentmanagerConfig() { return documentmanagerConfig; }
- /**
- * Sets the config id that the document manager should subscribe to.
- *
- * @param configId The config id.
- * @return This, to allow chaining.
- */
+ /** Sets the config id that the document manager should subscribe to. */
public DocumentAccessParams setDocumentManagerConfigId(String configId) {
documentManagerConfigId = configId;
return this;
}
+
+ public DocumentAccessParams setDocumentmanagerConfig(DocumentmanagerConfig documentmanagerConfig) {
+ this.documentmanagerConfig = Optional.of(documentmanagerConfig);
+ return this;
+ }
+
} \ No newline at end of file
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java
index edcefe9447d..ab1b5e7cdd6 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalDocumentAccess.java
@@ -22,13 +22,6 @@ public class LocalDocumentAccess extends DocumentAccess {
}
@Override
- public void shutdown() {
- if (documentTypeManagerConfig != null) {
- documentTypeManagerConfig.close();
- }
- }
-
- @Override
public SyncSession createSyncSession(SyncParameters parameters) {
return new LocalSyncSession(this);
}
@@ -57,4 +50,5 @@ public class LocalDocumentAccess extends DocumentAccess {
public SubscriptionSession openSubscription(SubscriptionParameters parameters) {
throw new UnsupportedOperationException("Not supported yet");
}
+
}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java
index 818bc204784..bd191eccbb8 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusDocumentAccess.java
@@ -9,6 +9,8 @@ import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
import com.yahoo.messagebus.MessageBus;
import com.yahoo.messagebus.RPCMessageBus;
import com.yahoo.messagebus.network.Network;
+import com.yahoo.messagebus.network.local.LocalNetwork;
+import com.yahoo.messagebus.network.local.LocalWire;
import com.yahoo.messagebus.routing.RoutingTable;
import java.util.concurrent.Executors;
@@ -22,7 +24,13 @@ import java.util.concurrent.ScheduledExecutorService;
*/
public class MessageBusDocumentAccess extends DocumentAccess {
+ // either
private final RPCMessageBus bus;
+ // ... or
+ private final MessageBus messageBus;
+ private final Network network;
+ // ... TODO: Do that cleanly
+
private final MessageBusParams params;
// TODO: make pool size configurable? ScheduledExecutorService is not dynamic
private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(
@@ -46,32 +54,44 @@ public class MessageBusDocumentAccess extends DocumentAccess {
try {
com.yahoo.messagebus.MessageBusParams mbusParams = new com.yahoo.messagebus.MessageBusParams(params.getMessageBusParams());
mbusParams.addProtocol(new DocumentProtocol(getDocumentTypeManager(), params.getProtocolConfigId(), params.getLoadTypes()));
- bus = new RPCMessageBus(mbusParams,
- params.getRPCNetworkParams(),
- params.getRoutingConfigId());
+ if (System.getProperty("vespa.local", "false").equals("true")) { // TODO: Hackety hack ... see Application
+ bus = null;
+ network = new LocalNetwork(new LocalWire());
+ messageBus = new MessageBus(network, mbusParams);
+ }
+ else {
+ bus = new RPCMessageBus(mbusParams,
+ params.getRPCNetworkParams(),
+ params.getRoutingConfigId());
+ network = null;
+ messageBus = null;
+ }
}
catch (Exception e) {
throw new DocumentAccessException(e);
}
}
+
+ private MessageBus messageBus() {
+ return bus != null ? bus.getMessageBus() : messageBus;
+ }
@Override
public void shutdown() {
+ super.shutdown();
+ if (bus != null)
bus.destroy();
- if (documentTypeManagerConfig != null) {
- documentTypeManagerConfig.close();
- }
scheduledExecutorService.shutdownNow();
}
@Override
public MessageBusSyncSession createSyncSession(SyncParameters parameters) {
- return new MessageBusSyncSession(parameters, bus.getMessageBus(), this.params);
+ return new MessageBusSyncSession(parameters, messageBus(), this.params);
}
@Override
public MessageBusAsyncSession createAsyncSession(AsyncParameters parameters) {
- return new MessageBusAsyncSession(parameters, bus.getMessageBus(), this.params);
+ return new MessageBusAsyncSession(parameters, messageBus(), this.params);
}
@Override
@@ -107,7 +127,7 @@ public class MessageBusDocumentAccess extends DocumentAccess {
* @return The internal message bus.
*/
public MessageBus getMessageBus() {
- return bus.getMessageBus();
+ return messageBus();
}
/**
@@ -118,7 +138,7 @@ public class MessageBusDocumentAccess extends DocumentAccess {
* @return The network layer.
*/
public Network getNetwork() {
- return bus.getRPCNetwork();
+ return bus != null ? bus.getRPCNetwork() : network;
}
/**
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java
index cb453559ab1..b9129bf3b85 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/loadtypes/LoadTypeSet.java
@@ -23,6 +23,7 @@ import java.util.TreeMap;
* load types yourself with addType().
*/
public class LoadTypeSet {
+
class DualMap {
Map<String, LoadType> nameMap = new TreeMap<String, LoadType>();
Map<Integer, LoadType> idMap = new HashMap<Integer, LoadType>();
@@ -49,6 +50,10 @@ public class LoadTypeSet {
configure(new ConfigGetter<>(LoadTypeConfig.class).getConfig(configId));
}
+ public LoadTypeSet(LoadTypeConfig loadTypeConfig) {
+ configure(loadTypeConfig);
+ }
+
public Map<String, LoadType> getNameMap() {
return map.nameMap;
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java
index 729bef7985f..cf5beb4a903 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/MessageBus.java
@@ -22,33 +22,34 @@ import java.util.logging.Logger;
* and forward messages.</p>
*
* <p>There are three types of sessions:</p>
- * <ul><li>{@link SourceSession Source sessions} sends messages and receives
- * replies</li>
- * <li>{@link IntermediateSession Intermediate sessions} receives messages on
- * their way to their final destination, and may decide to forward the messages
- * or reply directly.</li>
- * <li>{@link DestinationSession Destination sessions} are the final recipient
- * of messages, and are expected to reply to every one of them, but may not
- * forward messages.</li></ul>
+ * <ul>
+ * <li>{@link SourceSession Source sessions} sends messages and receives replies</li>
+ * <li>{@link IntermediateSession Intermediate sessions} receives messages on
+ * their way to their final destination, and may decide to forward the messages or reply directly.
+ * <li>{@link DestinationSession Destination sessions} are the final recipient
+ * of messages, and are expected to reply to every one of them, but may not forward messages.
+ * </ul>
*
* <p>A message bus is configured with a {@link Protocol protocol}. This table
* enumerates the permissible routes from intermediates to destinations and the
* messaging semantics of each hop.</p>
*
- * <p>The responsibilities of a message bus are:</p>
- * <ul> <li>Assign a route to every send message from its routing table</li>
- * <li>Deliver every message it <i>accepts</i> to the next hop on its route on a
- * best effort basis, <i>or</i> deliver a <i>failure reply</i>.</li>
- * <li>Deliver replies back to message sources through all the intermediate
- * hops.</li></ul>
+ * The responsibilities of a message bus are:
+ * <ul>
+ * <li>Assign a route to every send message from its routing table
+ * <li>Deliver every message it <i>accepts</i> to the next hop on its route
+ * <i>or</i> deliver a <i>failure reply</i>.
+ * <li>Deliver replies back to message sources through all the intermediate hops.
+ * </ul>
*
- * <p>A runtime will typically</p>
- * <ul><li>Create a message bus implementation and set properties on this
- * implementation once.</li>
- * <li>Create sessions using that message bus many places.</li></ul>
+ * A runtime will typically
+ * <ul>
+ * <li>Create a message bus implementation and set properties on this implementation once.
+ * <li>Create sessions using that message bus many places.</li>
+ * </ul>
*
- * @author btratseth
- * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ * @author bratseth
+ * @author Simon Thoresen
*/
public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler, ReplyHandler {
@@ -101,9 +102,8 @@ public class MessageBus implements ConfigHandler, NetworkOwner, MessageHandler,
// Attach and start network.
this.net = net;
net.attach(this);
- if (!net.waitUntilReady(120)) {
+ if ( ! net.waitUntilReady(120))
throw new IllegalStateException("Network failed to become ready in time.");
- }
// Start messenger.
msn = new Messenger();
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java b/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java
index cd3b3286778..b0bbe4266c4 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/Network.java
@@ -21,28 +21,28 @@ public interface Network {
* @param seconds The timeout.
* @return True if ready.
*/
- public boolean waitUntilReady(double seconds);
+ boolean waitUntilReady(double seconds);
/**
* Attach the network layer to the given owner
*
* @param owner owner of the network
*/
- public void attach(NetworkOwner owner);
+ void attach(NetworkOwner owner);
/**
* Register a session name with the network layer. This will make the session visible to other nodes.
*
* @param session the session name
*/
- public void registerSession(String session);
+ void registerSession(String session);
/**
* Unregister a session name with the network layer. This will make the session unavailable for other nodes.
*
* @param session session name
*/
- public void unregisterSession(String session);
+ void unregisterSession(String session);
/**
* Resolves the service address of the recipient referenced by the given routing node. If a recipient can not be
@@ -52,7 +52,7 @@ public interface Network {
* @param recipient The node whose service address to allocate.
* @return True if a service address was allocated.
*/
- public boolean allocServiceAddress(RoutingNode recipient);
+ boolean allocServiceAddress(RoutingNode recipient);
/**
* Frees the service address from the given routing node. This allows the network layer to track and close
@@ -60,7 +60,7 @@ public interface Network {
*
* @param recipient The node whose service address to free.
*/
- public void freeServiceAddress(RoutingNode recipient);
+ void freeServiceAddress(RoutingNode recipient);
/**
* Send a message to the given recipients. A {@link RoutingNode} contains all the necessary context for sending.
@@ -68,7 +68,7 @@ public interface Network {
* @param msg The message to send.
* @param recipients A list of routing leaf nodes resolved for the message.
*/
- public void send(Message msg, List<RoutingNode> recipients);
+ void send(Message msg, List<RoutingNode> recipients);
/**
* Synchronize with internal threads. This method will handshake with all internal threads. This has the implicit
@@ -76,12 +76,12 @@ public interface Network {
* that would make the thread wait for itself... forever. This method is typically used to untangle during session
* shutdown.
*/
- public void sync();
+ void sync();
/**
* Shuts down the network. This is a blocking call that waits for all scheduled tasks to complete.
*/
- public void shutdown();
+ void shutdown();
/**
* Returns a string that represents the connection specs of this network. It is in not a complete address since it
@@ -89,12 +89,13 @@ public interface Network {
*
* @return The connection string.
*/
- public String getConnectionSpec();
+ String getConnectionSpec();
/**
* Returns a reference to a name server mirror.
*
* @return The mirror object.
*/
- public IMirror getMirror();
+ IMirror getMirror();
+
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java
index ffcb853a0a7..bbbb49e4370 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalNetwork.java
@@ -23,7 +23,7 @@ import java.util.concurrent.Executors;
import static com.yahoo.messagebus.ErrorCode.NO_ADDRESS_FOR_SERVICE;
/**
- * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a>
+ * @author Simon Thoresen Hult
*/
public class LocalNetwork implements Network {
@@ -32,35 +32,35 @@ public class LocalNetwork implements Network {
private final String hostId;
private volatile NetworkOwner owner;
- public LocalNetwork(final LocalWire wire) {
+ public LocalNetwork(LocalWire wire) {
this.wire = wire;
this.hostId = wire.newHostId();
}
@Override
- public boolean waitUntilReady(final double seconds) {
+ public boolean waitUntilReady(double seconds) {
return true;
}
@Override
- public void attach(final NetworkOwner owner) {
+ public void attach(NetworkOwner owner) {
this.owner = owner;
}
@Override
- public void registerSession(final String session) {
+ public void registerSession(String session) {
wire.registerService(hostId + "/" + session, this);
}
@Override
- public void unregisterSession(final String session) {
+ public void unregisterSession(String session) {
wire.unregisterService(hostId + "/" + session);
}
@Override
- public boolean allocServiceAddress(final RoutingNode recipient) {
- final String service = recipient.getRoute().getHop(0).getServiceName();
- final ServiceAddress address = wire.resolveServiceAddress(service);
+ public boolean allocServiceAddress(RoutingNode recipient) {
+ String service = recipient.getRoute().getHop(0).getServiceName();
+ ServiceAddress address = wire.resolveServiceAddress(service);
if (address == null) {
recipient.setError(new Error(NO_ADDRESS_FOR_SERVICE, "No address for service '" + service + "'."));
return false;
@@ -70,24 +70,24 @@ public class LocalNetwork implements Network {
}
@Override
- public void freeServiceAddress(final RoutingNode recipient) {
+ public void freeServiceAddress(RoutingNode recipient) {
recipient.setServiceAddress(null);
}
@Override
- public void send(final Message msg, final List<RoutingNode> recipients) {
- for (final RoutingNode recipient : recipients) {
+ public void send(Message msg, List<RoutingNode> recipients) {
+ for (RoutingNode recipient : recipients) {
new MessageEnvelope(this, msg, recipient).send();
}
}
- private void receiveLater(final MessageEnvelope envelope) {
- final byte[] payload = envelope.sender.encode(envelope.msg.getProtocol(), envelope.msg);
+ private void receiveLater(MessageEnvelope envelope) {
+ byte[] payload = envelope.sender.encode(envelope.msg.getProtocol(), envelope.msg);
executor.execute(new Runnable() {
@Override
public void run() {
- final Message msg = decode(envelope.msg.getProtocol(), payload, Message.class);
+ Message msg = decode(envelope.msg.getProtocol(), payload, Message.class);
msg.getTrace().setLevel(envelope.msg.getTrace().getLevel());
msg.setRoute(envelope.msg.getRoute()).getRoute().removeHop(0);
msg.setRetryEnabled(envelope.msg.getRetryEnabled());
@@ -96,7 +96,7 @@ public class LocalNetwork implements Network {
msg.pushHandler(new ReplyHandler() {
@Override
- public void handleReply(final Reply reply) {
+ public void handleReply(Reply reply) {
new ReplyEnvelope(LocalNetwork.this, envelope, reply).send();
}
});
@@ -106,17 +106,17 @@ public class LocalNetwork implements Network {
});
}
- private void receiveLater(final ReplyEnvelope envelope) {
- final byte[] payload = envelope.sender.encode(envelope.reply.getProtocol(), envelope.reply);
+ private void receiveLater(ReplyEnvelope envelope) {
+ byte[] payload = envelope.sender.encode(envelope.reply.getProtocol(), envelope.reply);
executor.execute(new Runnable() {
@Override
public void run() {
- final Reply reply = decode(envelope.reply.getProtocol(), payload, Reply.class);
+ Reply reply = decode(envelope.reply.getProtocol(), payload, Reply.class);
reply.setRetryDelay(envelope.reply.getRetryDelay());
reply.getTrace().getRoot().addChild(TraceNode.decode(envelope.reply.getTrace().getRoot().encode()));
for (int i = 0, len = envelope.reply.getNumErrors(); i < len; ++i) {
- final Error error = envelope.reply.getError(i);
+ Error error = envelope.reply.getError(i);
reply.addError(new Error(error.getCode(),
error.getMessage(),
error.getService() != null ? error.getService() : envelope.sender.hostId));
@@ -126,7 +126,7 @@ public class LocalNetwork implements Network {
});
}
- private byte[] encode(final Utf8String protocolName, final Routable toEncode) {
+ private byte[] encode(Utf8String protocolName, Routable toEncode) {
if (toEncode.getType() == 0) {
return new byte[0];
}
@@ -134,7 +134,7 @@ public class LocalNetwork implements Network {
}
@SuppressWarnings("unchecked")
- private <T extends Routable> T decode(final Utf8String protocolName, final byte[] toDecode, final Class<T> clazz) {
+ private <T extends Routable> T decode(Utf8String protocolName, byte[] toDecode, Class<T> clazz) {
if (toDecode.length == 0) {
return clazz.cast(new EmptyReply());
}
@@ -167,15 +167,14 @@ public class LocalNetwork implements Network {
final Message msg;
final RoutingNode recipient;
- MessageEnvelope(final LocalNetwork sender, final Message msg, final RoutingNode recipient) {
+ MessageEnvelope(LocalNetwork sender, Message msg, RoutingNode recipient) {
this.sender = sender;
this.msg = msg;
this.recipient = recipient;
}
void send() {
- LocalServiceAddress.class.cast(recipient.getServiceAddress())
- .getNetwork().receiveLater(this);
+ LocalServiceAddress.class.cast(recipient.getServiceAddress()).getNetwork().receiveLater(this);
}
}
@@ -185,7 +184,7 @@ public class LocalNetwork implements Network {
final MessageEnvelope parent;
final Reply reply;
- ReplyEnvelope(final LocalNetwork sender, final MessageEnvelope parent, final Reply reply) {
+ ReplyEnvelope(LocalNetwork sender, MessageEnvelope parent, Reply reply) {
this.sender = sender;
this.parent = parent;
this.reply = reply;
@@ -195,4 +194,5 @@ public class LocalNetwork implements Network {
parent.sender.receiveLater(this);
}
}
+
}
diff --git a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
index 84ca8c64bc0..5c9035a5f99 100644
--- a/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
+++ b/messagebus/src/main/java/com/yahoo/messagebus/network/local/LocalWire.java
@@ -11,7 +11,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Pattern;
/**
- * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen Hult</a>
+ * @author Simon Thoresen Hult
*/
public class LocalWire implements IMirror {
@@ -19,19 +19,19 @@ public class LocalWire implements IMirror {
private final AtomicInteger updateCnt = new AtomicInteger();
private final ConcurrentHashMap<String, LocalNetwork> services = new ConcurrentHashMap<>();
- public void registerService(final String serviceName, final LocalNetwork owner) {
+ public void registerService(String serviceName, LocalNetwork owner) {
if (services.putIfAbsent(serviceName, owner) != null) {
throw new IllegalStateException();
}
updateCnt.incrementAndGet();
}
- public void unregisterService(final String serviceName) {
+ public void unregisterService(String serviceName) {
services.remove(serviceName);
updateCnt.incrementAndGet();
}
- public LocalServiceAddress resolveServiceAddress(final String serviceName) {
+ public LocalServiceAddress resolveServiceAddress(String serviceName) {
final LocalNetwork owner = services.get(serviceName);
return owner != null ? new LocalServiceAddress(serviceName, owner) : null;
}
@@ -41,10 +41,10 @@ public class LocalWire implements IMirror {
}
@Override
- public Mirror.Entry[] lookup(final String pattern) {
- final List<Mirror.Entry> out = new ArrayList<>();
- final Pattern regex = Pattern.compile(pattern.replace("*", "[a-zA-Z0-9_-]+"));
- for (final String key : services.keySet()) {
+ public Mirror.Entry[] lookup(String pattern) {
+ List<Mirror.Entry> out = new ArrayList<>();
+ Pattern regex = Pattern.compile(pattern.replace("*", "[a-zA-Z0-9_-]+"));
+ for (String key : services.keySet()) {
if (regex.matcher(key).matches()) {
out.add(new Mirror.Entry(key, key));
}
@@ -56,4 +56,5 @@ public class LocalWire implements IMirror {
public int updates() {
return updateCnt.get();
}
+
}
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 4889d064387..6a7797c20a7 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
@@ -23,6 +23,7 @@ import com.yahoo.document.restapi.RestUri;
import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
import com.yahoo.documentapi.messagebus.MessageBusParams;
import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
+import com.yahoo.vespa.config.content.LoadTypeConfig;
import com.yahoo.vespaxmlparser.VespaXMLFeedReader;
import java.io.IOException;
@@ -55,10 +56,12 @@ public class RestApi extends LoggingRequestHandler {
private AtomicInteger threadsAvailableForApi = new AtomicInteger(20 /*max concurrent requests */);
@Inject
- public RestApi(Executor executor, AccessLog accessLog, DocumentmanagerConfig documentManagerConfig) {
+ public RestApi(Executor executor, AccessLog accessLog, DocumentmanagerConfig documentManagerConfig,
+ LoadTypeConfig loadTypeConfig) {
super(executor, accessLog);
- final LoadTypeSet loadTypes = new LoadTypeSet("client");
- this.operationHandler = new OperationHandlerImpl(new MessageBusDocumentAccess(new MessageBusParams(loadTypes)));
+ MessageBusParams params = new MessageBusParams(new LoadTypeSet(loadTypeConfig));
+ params.setDocumentmanagerConfig(documentManagerConfig);
+ this.operationHandler = new OperationHandlerImpl(new MessageBusDocumentAccess(params));
this.singleDocumentParser = new SingleDocumentParser(new DocumentTypeManager(documentManagerConfig));
}
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemove.java b/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemove.java
index 14b2d86ae75..87a7ebe9e49 100755
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemove.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemove.java
@@ -3,9 +3,12 @@ package com.yahoo.feedhandler;
import com.google.inject.Inject;
import com.yahoo.clientmetrics.RouteMetricSet;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.document.DocumentId;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.feedapi.FeedContext;
import com.yahoo.feedapi.MessagePropertyProcessor;
import com.yahoo.feedapi.SingleSender;
@@ -20,9 +23,14 @@ import java.util.concurrent.Executor;
public class VespaFeedHandlerRemove extends VespaFeedHandlerBase {
@Inject
- public VespaFeedHandlerRemove(FeederConfig feederConfig,
- LoadTypeConfig loadTypeConfig, Executor executor, Metric metric) throws Exception {
- super(feederConfig, loadTypeConfig, executor, metric);
+ public VespaFeedHandlerRemove(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig,
+ Executor executor,
+ Metric metric) throws Exception {
+ super(feederConfig, loadTypeConfig, documentmanagerConfig, slobroksConfig, clusterListConfig, executor, metric);
}
VespaFeedHandlerRemove(FeedContext context, Executor executor) throws Exception {
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemoveLocation.java b/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemoveLocation.java
index 3b2f82c865e..04d22386bfb 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemoveLocation.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerRemoveLocation.java
@@ -3,8 +3,11 @@ package com.yahoo.feedhandler;
import com.google.inject.Inject;
import com.yahoo.clientmetrics.RouteMetricSet;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.documentapi.messagebus.protocol.RemoveLocationMessage;
import com.yahoo.feedapi.FeedContext;
import com.yahoo.feedapi.MessagePropertyProcessor;
@@ -19,9 +22,13 @@ import java.util.concurrent.Executor;
public class VespaFeedHandlerRemoveLocation extends VespaFeedHandlerBase {
@Inject
- public VespaFeedHandlerRemoveLocation(FeederConfig feederConfig, LoadTypeConfig loadTypeConfig, Executor executor,
- Metric metric) throws Exception {
- super(feederConfig, loadTypeConfig, executor, metric);
+ public VespaFeedHandlerRemoveLocation(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig,
+ Executor executor, Metric metric) throws Exception {
+ super(feederConfig, loadTypeConfig, documentmanagerConfig, slobroksConfig, clusterListConfig, executor, metric);
}
VespaFeedHandlerRemoveLocation(FeedContext context, Executor executor) throws Exception {
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerStatus.java b/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerStatus.java
index 77930ae5a94..ed80443f970 100755
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerStatus.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerStatus.java
@@ -3,9 +3,12 @@ package com.yahoo.feedhandler;
import java.util.concurrent.Executor;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
import com.yahoo.container.jdisc.ThreadedHttpRequestHandler;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.vespa.config.content.LoadTypeConfig;
import com.yahoo.feedapi.FeedContext;
import com.yahoo.metrics.MetricManager;
@@ -16,8 +19,14 @@ public class VespaFeedHandlerStatus extends ThreadedHttpRequestHandler {
private MetricManager manager;
- public VespaFeedHandlerStatus(FeederConfig feederConfig, LoadTypeConfig loadTypeConfig, Executor executor) {
- this(FeedContext.getInstance(feederConfig, loadTypeConfig, new NullFeedMetric()), true, true, executor);
+ public VespaFeedHandlerStatus(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig,
+ Executor executor) {
+ this(FeedContext.getInstance(feederConfig, loadTypeConfig, documentmanagerConfig, slobroksConfig,
+ clusterListConfig, new NullFeedMetric()), true, true, executor);
}
VespaFeedHandlerStatus(FeedContext context, boolean doLog, boolean makeSnapshots, Executor executor) {
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/GetSearcher.java b/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/GetSearcher.java
index 661fcac6a64..cf42bce9c1c 100755
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/GetSearcher.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/GetSearcher.java
@@ -2,7 +2,10 @@
package com.yahoo.storage.searcher;
import com.google.inject.Inject;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.container.jdisc.HttpRequest;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.feedhandler.NullFeedMetric;
import com.yahoo.processing.request.CompoundName;
import com.yahoo.vespa.config.content.LoadTypeConfig;
@@ -169,9 +172,13 @@ public class GetSearcher extends Searcher {
}
@Inject
- public GetSearcher(FeederConfig feederConfig, LoadTypeConfig loadTypeConfig) throws Exception {
- this(FeedContext.getInstance(feederConfig, loadTypeConfig, new NullFeedMetric()),
- (long)(feederConfig.timeout() * 1000));
+ public GetSearcher(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig) throws Exception {
+ this(FeedContext.getInstance(feederConfig, loadTypeConfig, documentmanagerConfig, slobroksConfig,
+ clusterListConfig, new NullFeedMetric()), (long)(feederConfig.timeout() * 1000));
}
GetSearcher(FeedContext context) throws Exception {
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/VisitSearcher.java b/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/VisitSearcher.java
index 621ffcefbe1..2d7e5fbc338 100644
--- a/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/VisitSearcher.java
+++ b/vespaclient-container-plugin/src/main/java/com/yahoo/storage/searcher/VisitSearcher.java
@@ -1,6 +1,9 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.storage.searcher;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.feedhandler.NullFeedMetric;
import com.yahoo.vespa.config.content.LoadTypeConfig;
import com.yahoo.component.ComponentId;
@@ -30,8 +33,13 @@ public class VisitSearcher extends Searcher {
public static final String VISITOR_CONTINUATION_TOKEN_FIELDNAME = "visitorContinuationToken";
FeedContext context;
- public VisitSearcher(FeederConfig feederConfig, LoadTypeConfig loadTypeConfig) throws Exception {
- this(FeedContext.getInstance(feederConfig, loadTypeConfig, new NullFeedMetric()));
+ public VisitSearcher(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig) throws Exception {
+ this(FeedContext.getInstance(feederConfig, loadTypeConfig, documentmanagerConfig,
+ slobroksConfig, clusterListConfig, new NullFeedMetric()));
}
VisitSearcher(FeedContext context) throws Exception {
diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/storage/searcher/VisitorSearcherTestCase.java b/vespaclient-container-plugin/src/test/java/com/yahoo/storage/searcher/VisitorSearcherTestCase.java
index 820f7f56e2f..4b1c69c73e7 100644
--- a/vespaclient-container-plugin/src/test/java/com/yahoo/storage/searcher/VisitorSearcherTestCase.java
+++ b/vespaclient-container-plugin/src/test/java/com/yahoo/storage/searcher/VisitorSearcherTestCase.java
@@ -60,8 +60,7 @@ public class VisitorSearcherTestCase {
public VisitSearcher create() throws Exception {
ClusterListConfig.Storage.Builder storageCluster = new ClusterListConfig.Storage.Builder().configid("storage/cluster.foobar").name("foobar");
ClusterListConfig clusterListCfg = new ClusterListConfig(new ClusterListConfig.Builder().storage(storageCluster));
- ClusterList clusterList = new ClusterList();
- clusterList.configure(clusterListCfg);
+ ClusterList clusterList = new ClusterList(clusterListCfg);
return new VisitSearcher(new FeedContext(
new MessagePropertyProcessor(new FeederConfig(new FeederConfig.Builder().timeout(458).route("riksveg18").retryenabled(true)),
new LoadTypeConfig(new LoadTypeConfig.Builder())),
@@ -139,15 +138,13 @@ public class VisitorSearcherTestCase {
ClusterListConfig.Storage.Builder storageCluster1 = new ClusterListConfig.Storage.Builder().configid("storage/cluster.foo").name("foo");
ClusterListConfig.Storage.Builder storageCluster2 = new ClusterListConfig.Storage.Builder().configid("storage/cluster.bar").name("bar");
ClusterListConfig clusterListCfg = new ClusterListConfig(new ClusterListConfig.Builder().storage(Arrays.asList(storageCluster1, storageCluster2)));
- ClusterList clusterList = new ClusterList();
- clusterList.configure(clusterListCfg);
+ ClusterList clusterList = new ClusterList(clusterListCfg);
VisitSearcher searcher = new VisitSearcher(new FeedContext(
new MessagePropertyProcessor(new FeederConfig(new FeederConfig.Builder().timeout(100).route("whatever").retryenabled(true)),
new LoadTypeConfig(new LoadTypeConfig.Builder())),
factory, docMan, clusterList, new NullFeedMetric()));
- searcher.getVisitorParameters(
- newQuery("visit?visit.selection=id.user=1234"), null);
+ searcher.getVisitorParameters(newQuery("visit?visit.selection=id.user=1234"), null);
}
@Test
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java
index a26064cd98b..c08d70b02f4 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeedContext.java
@@ -1,6 +1,9 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.jdisc.Metric;
import com.yahoo.vespa.config.content.LoadTypeConfig;
import com.yahoo.document.DocumentTypeManager;
@@ -87,16 +90,21 @@ public class FeedContext {
return docTypeManager;
}
- public static FeedContext getInstance(FeederConfig feederConfig, LoadTypeConfig loadTypeConfig, Metric metric) {
+ public static FeedContext getInstance(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig,
+ Metric metric) {
synchronized (sync) {
try {
if (instance == null) {
MessagePropertyProcessor proc = new MessagePropertyProcessor(feederConfig, loadTypeConfig);
- MessageBusSessionFactory mbusFactory = new MessageBusSessionFactory(proc);
+ MessageBusSessionFactory mbusFactory = new MessageBusSessionFactory(proc, documentmanagerConfig, slobroksConfig);
instance = new FeedContext(proc,
mbusFactory,
mbusFactory.getAccess().getDocumentTypeManager(),
- new ClusterList("client"), metric);
+ new ClusterList(clusterListConfig), metric);
} else {
instance.getPropertyProcessor().configure(feederConfig, loadTypeConfig);
}
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java
index 2894993b983..1546d605f02 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/FeederOptions.java
@@ -252,18 +252,6 @@ public class FeederOptions {
return params;
}
- public MessageBusParams toMessageBusParams() {
- MessageBusParams mbusParams = new MessageBusParams();
- if (retryEnabled) {
- RetryTransientErrorsPolicy retryPolicy = new RetryTransientErrorsPolicy();
- retryPolicy.setBaseDelay(retryDelay);
- mbusParams.setRetryPolicy(retryPolicy);
- } else {
- mbusParams.setRetryPolicy(null);
- }
- return mbusParams;
- }
-
public RPCNetworkParams getNetworkParams() {
try {
RPCNetworkParams networkParams = new RPCNetworkParams();
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java
index 8021ea86783..2d340810b3c 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedapi/MessageBusSessionFactory.java
@@ -1,6 +1,8 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.feedapi;
+import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.documentapi.VisitorParameters;
import com.yahoo.documentapi.VisitorSession;
import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
@@ -12,6 +14,7 @@ import com.yahoo.jdisc.Metric;
import com.yahoo.messagebus.Message;
import com.yahoo.messagebus.ReplyHandler;
import com.yahoo.messagebus.SourceSession;
+import com.yahoo.messagebus.network.rpc.RPCNetworkParams;
import java.util.Collections;
@@ -27,12 +30,17 @@ public class MessageBusSessionFactory implements SessionFactory {
String NUM_UPDATES = "num_updates";
}
- public MessageBusSessionFactory(MessagePropertyProcessor processor) {
+ public MessageBusSessionFactory(MessagePropertyProcessor processor,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig) {
this.processor = processor;
MessageBusParams params = new MessageBusParams(processor.getLoadTypes());
params.setTraceLevel(processor.getFeederOptions().getTraceLevel());
- params.setRPCNetworkParams(processor.getFeederOptions().getNetworkParams());
+ RPCNetworkParams rpcNetworkParams = processor.getFeederOptions().getNetworkParams();
+ rpcNetworkParams.setSlobroksConfig(slobroksConfig);
+ params.setRPCNetworkParams(rpcNetworkParams);
params.setDocumentManagerConfigId("client");
+ params.setDocumentmanagerConfig(documentmanagerConfig);
access = new MessageBusDocumentAccess(params);
}
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
index 6e3facbdc98..08e1ca0482f 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandler.java
@@ -3,8 +3,11 @@ package com.yahoo.feedhandler;
import com.google.inject.Inject;
import com.yahoo.clientmetrics.RouteMetricSet;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.HttpResponse;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.feedapi.DocprocMessageProcessor;
import com.yahoo.feedapi.FeedContext;
import com.yahoo.feedapi.Feeder;
@@ -30,9 +33,14 @@ public final class VespaFeedHandler extends VespaFeedHandlerBase {
public static final String JSON_INPUT = "jsonInput";
@Inject
- public VespaFeedHandler(FeederConfig feederConfig, LoadTypeConfig loadTypeConfig, Executor executor,
+ public VespaFeedHandler(FeederConfig feederConfig,
+ LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig,
+ Executor executor,
Metric metric) throws Exception {
- super(feederConfig, loadTypeConfig, executor, metric);
+ super(feederConfig, loadTypeConfig, documentmanagerConfig, slobroksConfig, clusterListConfig, executor, metric);
}
VespaFeedHandler(FeedContext context, Executor executor) throws Exception {
diff --git a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java
index fa1e6854593..6b4810f1ac4 100755
--- a/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java
+++ b/vespaclient-core/src/main/java/com/yahoo/feedhandler/VespaFeedHandlerBase.java
@@ -3,11 +3,14 @@ package com.yahoo.feedhandler;
import com.google.inject.Inject;
import com.yahoo.clientmetrics.ClientMetrics;
+import com.yahoo.cloud.config.ClusterListConfig;
+import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.container.jdisc.HttpRequest;
import com.yahoo.container.jdisc.ThreadedHttpRequestHandler;
import com.yahoo.docproc.DocprocService;
import com.yahoo.document.DocumentTypeManager;
+import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.feedapi.FeedContext;
import com.yahoo.feedapi.MessagePropertyProcessor;
import com.yahoo.feedapi.SharedSender;
@@ -29,9 +32,14 @@ public abstract class VespaFeedHandlerBase extends ThreadedHttpRequestHandler {
@Inject
public VespaFeedHandlerBase(FeederConfig feederConfig,
LoadTypeConfig loadTypeConfig,
+ DocumentmanagerConfig documentmanagerConfig,
+ SlobroksConfig slobroksConfig,
+ ClusterListConfig clusterListConfig,
Executor executor,
Metric metric) throws Exception {
- this(FeedContext.getInstance(feederConfig, loadTypeConfig, metric), executor, (long)feederConfig.timeout() * 1000);
+ this(FeedContext.getInstance(feederConfig, loadTypeConfig, documentmanagerConfig,
+ slobroksConfig, clusterListConfig, metric),
+ executor, (long)feederConfig.timeout() * 1000);
}
public VespaFeedHandlerBase(FeedContext context, Executor executor) throws Exception {
diff --git a/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java b/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java
index 3ea3bb5cb9d..8d214651359 100644
--- a/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java
+++ b/vespaclient-core/src/main/java/com/yahoo/vespaclient/ClusterList.java
@@ -7,34 +7,32 @@ import com.yahoo.config.subscription.ConfigGetter;
import java.util.ArrayList;
import java.util.List;
+/** A list of content clusters, either obtained from a list, a given config or by self-subscribing */
public class ClusterList {
- List<ClusterDef> storageClusters = new ArrayList<ClusterDef>();
+
+ List<ClusterDef> storageClusters = new ArrayList<>();
public ClusterList() {
- this(null);
+ this((String)null);
}
public ClusterList(String configId) {
- if (configId != null) {
+ if (configId != null)
configure(new ConfigGetter<>(ClusterListConfig.class).getConfig(configId));
- }
}
-
- public List<ClusterDef> getStorageClusters() {
- return storageClusters;
+
+ public ClusterList(ClusterListConfig config) {
+ configure(config);
}
- public void configure(ClusterListConfig cfg) {
- storageClusters.clear();
- for (int i = 0; i < cfg.storage().size(); i++) {
- storageClusters.add(new ClusterDef(cfg.storage(i).name(),
- cfg.storage(i).configid()));
- }
+ private void configure(ClusterListConfig config) {
+ storageClusters.clear(); // TODO: Create a new
+ for (int i = 0; i < config.storage().size(); i++)
+ storageClusters.add(new ClusterDef(config.storage(i).name(), config.storage(i).configid()));
}
- public static ClusterList createMockedList(List<ClusterDef> clusters) {
- ClusterList list = new ClusterList(null);
- list.storageClusters = clusters;
- return list;
+ public List<ClusterDef> getStorageClusters() {
+ return storageClusters; // TODO: Use immutable list
}
+
}