summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-04-28 12:54:10 +0200
committerHarald Musum <musum@yahooinc.com>2023-04-28 12:54:10 +0200
commit9e57a529c6588931f3fc5fd7ffe57a0828ec8f68 (patch)
tree7b72b17b121c792d3163e7b2b6877ac4d572c3fd
parenta80d630295034a4f9592e66fd0416c438e5dd376 (diff)
Make that AccessLog component is always added when needed
Add test that checks the above
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java27
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java7
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());