diff options
author | Harald Musum <musum@yahooinc.com> | 2023-04-28 12:54:10 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2023-04-28 12:54:10 +0200 |
commit | 9e57a529c6588931f3fc5fd7ffe57a0828ec8f68 (patch) | |
tree | 7b72b17b121c792d3163e7b2b6877ac4d572c3fd | |
parent | a80d630295034a4f9592e66fd0416c438e5dd376 (diff) |
Make that AccessLog component is always added when needed
Add test that checks the above
3 files changed, 23 insertions, 13 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index e4a0291c2ae..28cc787d1b7 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -289,7 +289,7 @@ public abstract class ContainerCluster<CONTAINER extends Container> return componentGroup.removeComponent(componentId); } - protected void addSimpleComponent(Class<?> clazz) { + public void addSimpleComponent(Class<?> clazz) { addSimpleComponent(clazz.getName()); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 601b6d8efe8..e81d3fe77e7 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -36,6 +36,7 @@ import com.yahoo.config.provision.Zone; import com.yahoo.config.provision.ZoneEndpoint; import com.yahoo.config.provision.zone.ZoneId; import com.yahoo.container.bundle.BundleInstantiationSpecification; +import com.yahoo.container.logging.AccessLog; import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.io.IOUtils; import com.yahoo.jdisc.http.server.jetty.VoidRequestLog; @@ -418,21 +419,23 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { protected void addAccessLogs(DeployState deployState, ApplicationContainerCluster cluster, Element spec) { List<Element> accessLogElements = getAccessLogElements(spec); - if (cluster.isHostedVespa() && !accessLogElements.isEmpty()) { - accessLogElements.clear(); - log.logApplicationPackage( - Level.WARNING, "Applications are not allowed to override the 'accesslog' element"); - } else { - for (Element accessLog : accessLogElements) { - AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog).ifPresent(cluster::addComponent); + if (accessLogElements.isEmpty()) { + if (deployState.getAccessLoggingEnabledByDefault()) + cluster.addAccessLog(); + else + cluster.addVoidAccessLog(); + } + else { + if (cluster.isHostedVespa()) { + log.logApplicationPackage(WARNING, "Applications are not allowed to override the 'accesslog' element"); + } else { + cluster.addSimpleComponent(AccessLog.class); + for (Element accessLog : accessLogElements) { + AccessLogBuilder.buildIfNotDisabled(deployState, cluster, accessLog).ifPresent(cluster::addComponent); + } } } - if (accessLogElements.isEmpty() && deployState.getAccessLoggingEnabledByDefault()) - cluster.addAccessLog(); - else - cluster.addVoidAccessLog(); - // Add connection log if access log is configured if (cluster.getAllComponents().stream().anyMatch(component -> component instanceof AccessLogComponent)) { // TODO: Vespa > 8: Clean up diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java index 05e83de9157..332b6481784 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java @@ -11,6 +11,7 @@ import com.yahoo.config.provision.Environment; import com.yahoo.config.provision.RegionName; import com.yahoo.config.provision.Zone; import com.yahoo.container.core.AccessLogConfig; +import com.yahoo.container.logging.AccessLog; import com.yahoo.container.logging.ConnectionLogConfig; import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.container.logging.JSONAccessLog; @@ -70,6 +71,11 @@ public class AccessLogTest extends ContainerModelBuilderTestBase { return cluster.getComponentsMap().get(ComponentId.fromString((JSONAccessLog.class.getName()))); } + private Component<?, ?> getAccessLog(String clusterName) { + ApplicationContainerCluster cluster = (ApplicationContainerCluster) root.getChildren().get(clusterName); + return cluster.getComponentsMap().get(ComponentId.fromString((AccessLog.class.getName()))); + } + @Test void access_log_can_be_configured() { Element clusterElem = DomBuilderTest.parse( @@ -84,6 +90,7 @@ public class AccessLogTest extends ContainerModelBuilderTestBase { createModel(root, clusterElem); assertNotNull(getJsonAccessLog("default")); assertNotNull(getVespaAccessLog("default")); + assertNotNull(getAccessLog("default")); { // vespa Component<?, ?> accessLogComponent = getComponent("default", VespaAccessLog.class.getName()); |