diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-01-19 19:04:28 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-01-20 15:27:58 +0100 |
commit | 122fc2af750c84f57311304b3b559833ff250543 (patch) | |
tree | b8f268daaed97223c5fb32a17c2f82cb92eb376a /config-model | |
parent | 6dbab1eed12373db1453fa51c43e9f8211158c81 (diff) |
Add feature flag for enabling zstd compression of access logs
Diffstat (limited to 'config-model')
6 files changed, 19 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java index ad491b3ca0c..a4b01259a72 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainer.java @@ -15,7 +15,7 @@ public class LogserverContainer extends Container { public LogserverContainer(AbstractConfigProducer parent, FeatureFlags featureFlags, boolean isHostedVespa) { super(parent, featureFlags, "" + 0, 0, isHostedVespa); - addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, ((LogserverContainerCluster) parent).getName(), true)); + addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, ((LogserverContainerCluster) parent).getName(), true, false)); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java index 6379ddcec95..e2df04ebbf3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java @@ -57,7 +57,8 @@ public class ClusterControllerContainer extends Container implements CLUSTERCONTROLLER_BUNDLE); addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, "controller", - deployState.isHosted())); + deployState.isHosted(), + deployState.featureFlags().enableZstdCompressionAccessLog())); // TODO: Why are bundles added here instead of in the cluster? addFileBundle("clustercontroller-apps"); 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 f4805e7ac15..23a860e2b67 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 @@ -530,8 +530,8 @@ public abstract class ContainerCluster<CONTAINER extends Container> if (containerSearch != null) containerSearch.connectSearchClusters(clusterMap); } - public void addDefaultSearchAccessLog() { - addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, getName(), isHostedVespa)); + public void addDefaultSearchAccessLog(DeployState deployState) { + addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, getName(), isHostedVespa, deployState.featureFlags().enableZstdCompressionAccessLog())); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java index e75812a9ad6..6e197915a64 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/AccessLogComponent.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.model.container.component; import com.yahoo.container.core.AccessLogConfig; +import com.yahoo.container.core.AccessLogConfig.FileHandler.CompressionFormat; import com.yahoo.container.logging.VespaAccessLog; import com.yahoo.container.logging.JSONAccessLog; import com.yahoo.osgi.provider.model.ComponentModel; @@ -19,13 +20,15 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL private final Boolean compression; private final boolean isHostedVespa; private final String symlinkName; + private final boolean enableZstdCompression; - public AccessLogComponent(AccessLogType logType, String clusterName, boolean isHostedVespa) + public AccessLogComponent(AccessLogType logType, String clusterName, boolean isHostedVespa, boolean enableZstdCompression) { this(logType, String.format("logs/vespa/qrs/%s.%s.%s", capitalize(logType.name()), clusterName, "%Y%m%d%H%M%S"), null, null, isHostedVespa, - capitalize(logType.name()) + "." + clusterName); + capitalize(logType.name()) + "." + clusterName, + enableZstdCompression); } private static String capitalize(String name) { @@ -37,7 +40,8 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL String rotationInterval, Boolean compressOnRotation, boolean isHostedVespa, - String symlinkName) + String symlinkName, + boolean enableZstdCompression) { super(new ComponentModel(accessLogClass(logType), null, "container-core", null)); this.fileNamePattern = fileNamePattern; @@ -45,6 +49,7 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL this.compression = compressOnRotation; this.isHostedVespa = isHostedVespa; this.symlinkName = symlinkName; + this.enableZstdCompression = enableZstdCompression; if (fileNamePattern == null) throw new RuntimeException("File name pattern required when configuring access log."); @@ -79,6 +84,9 @@ public final class AccessLogComponent extends SimpleComponent implements AccessL } else if (isHostedVespa) { builder.compressOnRotation(true); } + if (enableZstdCompression) { + builder.compressionFormat(CompressionFormat.Enum.ZSTD); + } return builder; } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java index a29c54f951b..5b87dc57306 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/AccessLogBuilder.java @@ -59,7 +59,8 @@ public class AccessLogBuilder { rotationInterval(spec), compressOnRotation(spec), isHostedVespa, - symlinkName(spec)); + symlinkName(spec), + deployState.featureFlags().enableZstdCompressionAccessLog()); } private String symlinkName(Element spec) { 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 15a37813150..d650b10a910 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 @@ -346,7 +346,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { } if (accessLogElements.isEmpty() && deployState.getAccessLoggingEnabledByDefault()) - cluster.addDefaultSearchAccessLog(); + cluster.addDefaultSearchAccessLog(deployState); // Add connection log if access log is configured if (cluster.getAllComponents().stream().anyMatch(component -> component instanceof AccessLogComponent)) { |