summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-02-15 14:29:36 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-02-15 14:29:36 +0100
commit0fe2eda14d9c41051ebfa3435ef9d17a9b993f42 (patch)
tree40e62f65106021c98fa4f79357e792ad40233678
parentab52a4510164d4843c979bb94d43edad0a2274e8 (diff)
Use singletons for all fallback components
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java9
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/container/logging/AccessLog.java4
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