summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-09-25 11:23:06 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-09-25 11:23:06 +0200
commit2cd240de82eedbad02868290c89036e91d3f8e7d (patch)
tree48f82af4bdf1c71f3037b05ef547bb1dbe095aba /container-core
parent17c6dc3a23badb17f468fe8b38bda57eab717a4c (diff)
Move injectable lazy document access to top level and rename to VespaDocumentAccess
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java97
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java101
2 files changed, 105 insertions, 93 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java b/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java
index deabcbad9b4..6eb80ae1aaf 100644
--- a/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java
+++ b/container-core/src/main/java/com/yahoo/container/core/documentapi/DocumentAccessProvider.java
@@ -5,22 +5,6 @@ import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.component.AbstractComponent;
import com.yahoo.container.di.componentgraph.Provider;
import com.yahoo.document.config.DocumentmanagerConfig;
-import com.yahoo.document.select.parser.ParseException;
-import com.yahoo.documentapi.AsyncParameters;
-import com.yahoo.documentapi.AsyncSession;
-import com.yahoo.documentapi.DocumentAccess;
-import com.yahoo.documentapi.DocumentAccessParams;
-import com.yahoo.documentapi.SubscriptionParameters;
-import com.yahoo.documentapi.SubscriptionSession;
-import com.yahoo.documentapi.SyncParameters;
-import com.yahoo.documentapi.SyncSession;
-import com.yahoo.documentapi.VisitorDestinationParameters;
-import com.yahoo.documentapi.VisitorDestinationSession;
-import com.yahoo.documentapi.VisitorParameters;
-import com.yahoo.documentapi.VisitorSession;
-import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
-import com.yahoo.documentapi.messagebus.MessageBusParams;
-import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.vespa.config.content.LoadTypeConfig;
@@ -29,19 +13,19 @@ import com.yahoo.vespa.config.content.LoadTypeConfig;
*
* @author jonmv
*/
-public class DocumentAccessProvider extends AbstractComponent implements Provider<DocumentAccessProvider.LazyWrapper> {
+public class DocumentAccessProvider extends AbstractComponent implements Provider<VespaDocumentAccess> {
- private final DocumentAccessProvider.LazyWrapper access;
+ private final VespaDocumentAccess access;
@Inject
// TODO jonmv: Have Slobrok and RPC config injected as well.
public DocumentAccessProvider(DocumentmanagerConfig documentmanagerConfig, LoadTypeConfig loadTypeConfig,
SlobroksConfig slobroksConfig, MessagebusConfig messagebusConfig) {
- this.access = new LazyWrapper(documentmanagerConfig, loadTypeConfig, slobroksConfig, messagebusConfig);
+ this.access = new VespaDocumentAccess(documentmanagerConfig, loadTypeConfig, slobroksConfig, messagebusConfig);
}
@Override
- public DocumentAccessProvider.LazyWrapper get() {
+ public VespaDocumentAccess get() {
return access;
}
@@ -51,77 +35,4 @@ public class DocumentAccessProvider extends AbstractComponent implements Provide
}
- public static class LazyWrapper extends DocumentAccess {
-
- private final MessageBusParams parameters;
- private final Object monitor = new Object();
-
- private DocumentAccess delegate = null;
- private boolean shutDown = false;
-
- private LazyWrapper(DocumentmanagerConfig documentmanagerConfig,
- LoadTypeConfig loadTypeConfig,
- SlobroksConfig slobroksConfig,
- MessagebusConfig messagebusConfig) {
- super(new DocumentAccessParams().setDocumentmanagerConfig(documentmanagerConfig));
- this.parameters = new MessageBusParams(new LoadTypeSet(loadTypeConfig));
- this.parameters.setDocumentmanagerConfig(documentmanagerConfig);
- this.parameters.getRPCNetworkParams().setSlobroksConfig(slobroksConfig);
- this.parameters.getMessageBusParams().setMessageBusConfig(messagebusConfig);
- }
-
- private DocumentAccess delegate() {
- synchronized (monitor) {
- if (delegate == null) {
- if (shutDown)
- throw new IllegalStateException("This document access has been shut down");
-
- delegate = new MessageBusDocumentAccess(parameters);
- }
- return delegate;
- }
- }
-
- @Override
- public void shutdown() {
- synchronized (monitor) {
- super.shutdown();
- shutDown = true;
- if (delegate != null)
- delegate.shutdown();
- }
- }
-
- @Override
- public SyncSession createSyncSession(SyncParameters parameters) {
- return delegate().createSyncSession(parameters);
- }
-
- @Override
- public AsyncSession createAsyncSession(AsyncParameters parameters) {
- return delegate().createAsyncSession(parameters);
- }
-
- @Override
- public VisitorSession createVisitorSession(VisitorParameters parameters) throws ParseException {
- return delegate().createVisitorSession(parameters);
- }
-
- @Override
- public VisitorDestinationSession createVisitorDestinationSession(VisitorDestinationParameters parameters) {
- return delegate().createVisitorDestinationSession(parameters);
- }
-
- @Override
- public SubscriptionSession createSubscription(SubscriptionParameters parameters) {
- return delegate().createSubscription(parameters);
- }
-
- @Override
- public SubscriptionSession openSubscription(SubscriptionParameters parameters) {
- return delegate().openSubscription(parameters);
- }
-
- }
-
}
diff --git a/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java b/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java
new file mode 100644
index 00000000000..fffa915a840
--- /dev/null
+++ b/container-core/src/main/java/com/yahoo/container/core/documentapi/VespaDocumentAccess.java
@@ -0,0 +1,101 @@
+package com.yahoo.container.core.documentapi;
+
+import com.yahoo.cloud.config.SlobroksConfig;
+import com.yahoo.document.config.DocumentmanagerConfig;
+import com.yahoo.document.select.parser.ParseException;
+import com.yahoo.documentapi.AsyncParameters;
+import com.yahoo.documentapi.AsyncSession;
+import com.yahoo.documentapi.DocumentAccess;
+import com.yahoo.documentapi.DocumentAccessParams;
+import com.yahoo.documentapi.SubscriptionParameters;
+import com.yahoo.documentapi.SubscriptionSession;
+import com.yahoo.documentapi.SyncParameters;
+import com.yahoo.documentapi.SyncSession;
+import com.yahoo.documentapi.VisitorDestinationParameters;
+import com.yahoo.documentapi.VisitorDestinationSession;
+import com.yahoo.documentapi.VisitorParameters;
+import com.yahoo.documentapi.VisitorSession;
+import com.yahoo.documentapi.messagebus.MessageBusDocumentAccess;
+import com.yahoo.documentapi.messagebus.MessageBusParams;
+import com.yahoo.documentapi.messagebus.loadtypes.LoadTypeSet;
+import com.yahoo.messagebus.MessagebusConfig;
+import com.yahoo.vespa.config.content.LoadTypeConfig;
+
+/**
+ * Wraps a lazily initialised MessageBusDocumentAccess. Lazy to allow it to always be set up.
+ * Inject this class directly (instead of DocumentAccess) for use in internal code.
+ *
+ * @author jonmv
+ */
+public class VespaDocumentAccess extends DocumentAccess {
+
+ private final MessageBusParams parameters;
+ private final Object monitor = new Object();
+
+ private DocumentAccess delegate = null;
+ private boolean shutDown = false;
+
+ VespaDocumentAccess(DocumentmanagerConfig documentmanagerConfig,
+ LoadTypeConfig loadTypeConfig,
+ SlobroksConfig slobroksConfig,
+ MessagebusConfig messagebusConfig) {
+ super(new DocumentAccessParams().setDocumentmanagerConfig(documentmanagerConfig));
+ this.parameters = new MessageBusParams(new LoadTypeSet(loadTypeConfig));
+ this.parameters.setDocumentmanagerConfig(documentmanagerConfig);
+ this.parameters.getRPCNetworkParams().setSlobroksConfig(slobroksConfig);
+ this.parameters.getMessageBusParams().setMessageBusConfig(messagebusConfig);
+ }
+
+ private DocumentAccess delegate() {
+ synchronized (monitor) {
+ if (delegate == null) {
+ if (shutDown)
+ throw new IllegalStateException("This document access has been shut down");
+
+ delegate = new MessageBusDocumentAccess(parameters);
+ }
+ return delegate;
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ synchronized (monitor) {
+ super.shutdown();
+ shutDown = true;
+ if (delegate != null)
+ delegate.shutdown();
+ }
+ }
+
+ @Override
+ public SyncSession createSyncSession(SyncParameters parameters) {
+ return delegate().createSyncSession(parameters);
+ }
+
+ @Override
+ public AsyncSession createAsyncSession(AsyncParameters parameters) {
+ return delegate().createAsyncSession(parameters);
+ }
+
+ @Override
+ public VisitorSession createVisitorSession(VisitorParameters parameters) throws ParseException {
+ return delegate().createVisitorSession(parameters);
+ }
+
+ @Override
+ public VisitorDestinationSession createVisitorDestinationSession(VisitorDestinationParameters parameters) {
+ return delegate().createVisitorDestinationSession(parameters);
+ }
+
+ @Override
+ public SubscriptionSession createSubscription(SubscriptionParameters parameters) {
+ return delegate().createSubscription(parameters);
+ }
+
+ @Override
+ public SubscriptionSession openSubscription(SubscriptionParameters parameters) {
+ return delegate().openSubscription(parameters);
+ }
+
+}