diff options
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java | 9 | ||||
-rw-r--r-- | jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLog.java | 4 |
2 files changed, 10 insertions, 3 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()); } diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLog.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLog.java index cdb4febb775..1db5d9b82f1 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLog.java +++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLog.java @@ -13,6 +13,8 @@ import com.yahoo.component.provider.ComponentRegistry; */ public class AccessLog implements RequestLog { + public static final AccessLog VOID_INSTANCE = new AccessLog(new ComponentRegistry<>()); + private final ComponentRegistry<RequestLogHandler> implementers; @Inject @@ -21,7 +23,7 @@ public class AccessLog implements RequestLog { } public static AccessLog voidAccessLog() { - return new AccessLog(new ComponentRegistry<>()); + return VOID_INSTANCE; } @Override |