diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2022-05-02 21:09:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-02 21:09:20 +0200 |
commit | e046ae79779261b09f85bcf4c04c906b83075775 (patch) | |
tree | f6983d307d0e84a1dbaeda89726dd8d53e55e927 /container-core/src/main/java/com | |
parent | d2066c0a0c04e2aa2ada12a5c85f5eae9ff65b02 (diff) | |
parent | 6058f5f8d2ed19ca3c0461e7080680a093834823 (diff) |
Merge pull request #22394 from vespa-engine/revert-22374-jonmv/remove-last-controller-jersey-client
Revert "Jonmv/remove last controller jersey client [run-systemtest]"
Diffstat (limited to 'container-core/src/main/java/com')
2 files changed, 23 insertions, 6 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 9da16744eec..be8ba669ec0 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 @@ -7,9 +7,10 @@ import com.yahoo.document.config.DocumentmanagerConfig; import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig; import com.yahoo.messagebus.MessagebusConfig; import com.yahoo.vespa.config.content.DistributionConfig; +import com.yahoo.vespa.config.content.LoadTypeConfig; /** - * Lets a lazily initialised DocumentAccess that forwards to a MessageBusDocumentAccess be injected in containers. + * Lets a lazily initialised DocumentAccess forwarding to a real MessageBusDocumentAccess be injected in containers. * * @author jonmv */ 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 index c708e87e6c5..7c5bebc47e8 100644 --- 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 @@ -20,8 +20,8 @@ import com.yahoo.documentapi.messagebus.MessageBusParams; import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig; import com.yahoo.messagebus.MessagebusConfig; import com.yahoo.vespa.config.content.DistributionConfig; -import com.yahoo.yolean.concurrent.Memoized; +import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Level; import java.util.logging.Logger; @@ -37,7 +37,8 @@ public class VespaDocumentAccess extends DocumentAccess { private final MessageBusParams parameters; - private final Memoized<DocumentAccess, RuntimeException> delegate; + private final AtomicReference<DocumentAccess> delegate = new AtomicReference<>(); + private boolean shutDown = false; VespaDocumentAccess(DocumentmanagerConfig documentmanagerConfig, String slobroksConfigId, @@ -50,11 +51,19 @@ public class VespaDocumentAccess extends DocumentAccess { this.parameters.setDocumentmanagerConfig(documentmanagerConfig); this.parameters.getRPCNetworkParams().setSlobrokConfigId(slobroksConfigId); this.parameters.getMessageBusParams().setMessageBusConfig(messagebusConfig); - this.delegate = new Memoized<>(() -> new MessageBusDocumentAccess(parameters), DocumentAccess::shutdown); } public DocumentAccess delegate() { - return delegate.get(); + DocumentAccess access = delegate.getAcquire(); + return access != null ? access : delegate.updateAndGet(value -> { + if (value != null) + return value; + + if (shutDown) + throw new IllegalStateException("This document access has been shut down"); + + return new MessageBusDocumentAccess(parameters); + }); } @Override @@ -63,7 +72,14 @@ public class VespaDocumentAccess extends DocumentAccess { } void protectedShutdown() { - delegate.close(); + delegate.updateAndGet(access -> { + super.shutdown(); + shutDown = true; + if (access != null) + access.shutdown(); + + return null; + }); } @Override |