Allow to disable log file compression
On sites where log file compression is done by an external service
such as logrotate [1], administrators may wish to disable Gerrit's
default log compression.
Add a new setting, log.compress, which disables log compression when
set to false. The default is true, for backwards compatibility with
current behaviour.
[1] http://manpages.ubuntu.com/manpages/zesty/man8/logrotate.8.html
Change-Id: I3ceb152ef61e711b2e73d01a05b8f7ceecd395b6
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 0581f19..1e68b04 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -3385,6 +3385,13 @@
+
Defaults to true.
+[[log.compress]]log.compress::
++
+If set to true, log files are compressed at server startup and then daily at 11pm
+(in the server's local time zone).
++
+Defaults to true.
+
[[mimetype]]
=== Section mimetype
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
index 853a43f..8d04be8 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
@@ -20,6 +20,7 @@
import com.google.common.io.ByteStreams;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
+import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
@@ -34,6 +35,7 @@
import java.time.temporal.ChronoUnit;
import java.util.concurrent.Future;
import java.util.zip.GZIPOutputStream;
+import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,15 +53,20 @@
static class Lifecycle implements LifecycleListener {
private final WorkQueue queue;
private final LogFileCompressor compressor;
+ private final boolean enabled;
@Inject
- Lifecycle(WorkQueue queue, LogFileCompressor compressor) {
+ Lifecycle(WorkQueue queue, LogFileCompressor compressor, @GerritServerConfig Config config) {
this.queue = queue;
this.compressor = compressor;
+ this.enabled = config.getBoolean("log", "compress", true);
}
@Override
public void start() {
+ if (!enabled) {
+ return;
+ }
// compress log once and then schedule compression every day at 11:00pm
queue.getDefaultQueue().execute(compressor);
ZoneId zone = ZoneId.systemDefault();