diff options
author | Morten Tokle <mortent@verizonmedia.com> | 2021-01-27 12:30:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-27 12:30:01 +0100 |
commit | f30a3e711a47219749ae1d4047ce239331de79d2 (patch) | |
tree | f0b11032062d12e8660236abf7b90a2d41cdbf1d /jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java | |
parent | 8f8b67705721e6652ba1d31635db9bf761f1f9eb (diff) | |
parent | 5dbee9b05ba81ba285cb266826ddb07745dc0e8e (diff) |
Merge pull request #16248 from vespa-engine/bjorncs/access-log-cleanup
Bjorncs/access log cleanup
Diffstat (limited to 'jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java')
-rw-r--r-- | jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java index c3c7bb64dc7..104c75a7b88 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java +++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java @@ -6,7 +6,6 @@ import com.yahoo.concurrent.ThreadFactoryFactory; import com.yahoo.io.NativeIO; import com.yahoo.log.LogFileDb; import com.yahoo.protect.Process; -import com.yahoo.system.ProcessExecuter; import com.yahoo.yolean.Exceptions; import java.io.BufferedOutputStream; @@ -21,7 +20,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; -import java.util.Arrays; import java.util.Optional; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CountDownLatch; @@ -43,7 +41,7 @@ class LogFileHandler <LOGTYPE> { enum Compression {NONE, GZIP, ZSTD} private final static Logger logger = Logger.getLogger(LogFileHandler.class.getName()); - private final ArrayBlockingQueue<Operation<LOGTYPE>> logQueue = new ArrayBlockingQueue<>(100000); + private final ArrayBlockingQueue<Operation<LOGTYPE>> logQueue = new ArrayBlockingQueue<>(10000); final LogThread<LOGTYPE> logThread; @FunctionalInterface private interface Pollable<T> { Operation<T> poll() throws InterruptedException; } @@ -75,6 +73,10 @@ class LogFileHandler <LOGTYPE> { addOperation(new Operation<>(r)); } + void publishAndWait(LOGTYPE r) { + addOperationAndWait(new Operation<>(r)); + } + public void flush() { addOperationAndWait(new Operation<>(Operation.Type.flush)); } @@ -439,18 +441,13 @@ class LogFileHandler <LOGTYPE> { */ private void createSymlinkToCurrentFile() { if (symlinkName == null) return; - File f = new File(fileName); - File f2 = new File(f.getParent(), symlinkName); - String[] cmd = new String[]{"/bin/ln", "-sf", f.getName(), f2.getPath()}; + Path target = Paths.get(fileName); + Path link = target.resolveSibling(symlinkName); try { - int retval = new ProcessExecuter().exec(cmd).getFirst(); - // Detonator pattern: Think of all the fun we can have if ln isn't what we - // think it is, if it doesn't return, etc, etc - if (retval != 0) { - logger.warning("Command '" + Arrays.toString(cmd) + "' + failed with exitcode=" + retval); - } + Files.deleteIfExists(link); + Files.createSymbolicLink(link, target.getFileName()); } catch (IOException e) { - logger.warning("Got '" + e + "' while doing'" + Arrays.toString(cmd) + "'."); + logger.log(Level.WARNING, "Failed to create symbolic link to current log file: " + e.getMessage(), e); } } |