diff options
author | jonmv <venstad@gmail.com> | 2022-04-29 20:18:30 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-05-02 12:02:02 +0200 |
commit | 0ad6f7f4892816c84542bf0dbe6fbc7c61febd2d (patch) | |
tree | 99619363fd4a39f3ae101f8ffd8c968f93b12414 /container-core | |
parent | 9c65dcd179a7b2c0b98b5e6fa3cc4a9a40221478 (diff) |
Simplify shared resource setup with Memoized
Diffstat (limited to 'container-core')
2 files changed, 6 insertions, 21 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 be8ba669ec0..54c263e2979 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 @@ -10,7 +10,7 @@ import com.yahoo.vespa.config.content.DistributionConfig; import com.yahoo.vespa.config.content.LoadTypeConfig; /** - * Lets a lazily initialised DocumentAccess forwarding to a real MessageBusDocumentAccess be injected in containers. + * Lets a lazily initialised DocumentAccess that forwards to a 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 7c5bebc47e8..7fc11c6bbd8 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,6 +20,7 @@ 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; @@ -37,8 +38,7 @@ public class VespaDocumentAccess extends DocumentAccess { private final MessageBusParams parameters; - private final AtomicReference<DocumentAccess> delegate = new AtomicReference<>(); - private boolean shutDown = false; + private final Memoized<DocumentAccess, RuntimeException> delegate; VespaDocumentAccess(DocumentmanagerConfig documentmanagerConfig, String slobroksConfigId, @@ -51,19 +51,11 @@ 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() { - 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); - }); + return delegate.get(); } @Override @@ -72,14 +64,7 @@ public class VespaDocumentAccess extends DocumentAccess { } void protectedShutdown() { - delegate.updateAndGet(access -> { - super.shutdown(); - shutDown = true; - if (access != null) - access.shutdown(); - - return null; - }); + delegate.close(); } @Override |