summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-01-27 12:30:01 +0100
committerGitHub <noreply@github.com>2021-01-27 12:30:01 +0100
commitf30a3e711a47219749ae1d4047ce239331de79d2 (patch)
treef0b11032062d12e8660236abf7b90a2d41cdbf1d /jdisc_http_service/src/main/java/com/yahoo/container/logging/LogFileHandler.java
parent8f8b67705721e6652ba1d31635db9bf761f1f9eb (diff)
parent5dbee9b05ba81ba285cb266826ddb07745dc0e8e (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.java23
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);
}
}