diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-02-15 14:29:36 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-02-15 14:29:36 +0100 |
commit | 0fe2eda14d9c41051ebfa3435ef9d17a9b993f42 (patch) | |
tree | 40e62f65106021c98fa4f79357e792ad40233678 /container-core | |
parent | ab52a4510164d4843c979bb94d43edad0a2274e8 (diff) |
Use singletons for all fallback components
Diffstat (limited to 'container-core')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java index 0fd31db67f6..05f34a27bc9 100644 --- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java +++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java @@ -48,6 +48,9 @@ public class HandlersConfigurerDi { private static final Logger log = Logger.getLogger(HandlersConfigurerDi.class.getName()); + private static final Executor fallbackExecutor = Executors.newCachedThreadPool( + ThreadFactoryFactory.getThreadFactory("HandlersConfigurerDI")); + private final com.yahoo.container.Container vespaContainer; private final Container container; @@ -138,10 +141,12 @@ public class HandlersConfigurerDi { return discInjector.createChildInjector(new AbstractModule() { @Override protected void configure() { + // Provide a singleton instance for all component fallbacks, + // otherwise fallback injection may lead to a cascade of components requiring reconstruction. bind(com.yahoo.container.Container.class).toInstance(vespaContainer); bind(com.yahoo.statistics.Statistics.class).toInstance(Statistics.nullImplementation); - bind(AccessLog.class).toInstance(new AccessLog(new ComponentRegistry<>())); - bind(Executor.class).toInstance(Executors.newCachedThreadPool(ThreadFactoryFactory.getThreadFactory("HandlersConfigurerDI"))); + bind(AccessLog.class).toInstance(AccessLog.VOID_INSTANCE); + bind(Executor.class).toInstance(fallbackExecutor); if (vespaContainer.getFileAcquirer() != null) bind(com.yahoo.filedistribution.fileacquirer.FileAcquirer.class).toInstance(vespaContainer.getFileAcquirer()); } |