aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2018-10-10 14:08:16 +0200
committerGitHub <noreply@github.com>2018-10-10 14:08:16 +0200
commitdd0c2900fefeb284f29d52e565cc29adc9ff12a2 (patch)
treeadbeae172e957590cacebbfe3703f8a806fe7b34
parent4e7738d63f0e167292eeb14ddd09a0bca25cabf4 (diff)
parent0b2a72eed2c849d84c101964ba4c9c546b4acaeb (diff)
Merge pull request #7266 from vespa-engine/balder/logfiledb-must-ensure-directory-exist
LogFileDB must ensure directory exists.
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogFileDb.java17
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java23
2 files changed, 25 insertions, 15 deletions
diff --git a/vespalog/src/main/java/com/yahoo/log/LogFileDb.java b/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
index d0fa64805bf..1ac98fc8acc 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
@@ -2,8 +2,10 @@
package com.yahoo.log;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static java.nio.file.StandardOpenOption.*;
+import static java.nio.file.StandardOpenOption.APPEND;
+import static java.nio.file.StandardOpenOption.CREATE;
+import java.io.File;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -28,12 +30,18 @@ public class LogFileDb {
}
private static OutputStream metaFile() throws java.io.IOException {
- String fn = getDefaults().underVespaHome(DBDIR + "logfiles." + dayStamp());
+ File dir = new File(getDefaults().underVespaHome(DBDIR));
+ if (!dir.exists()) {
+ if (!dir.mkdirs()) {
+ System.err.println("Failed creating logfiledb directory '" + dir.getPath() + "'.");
+ }
+ }
+ String fn = dir + "logfiles." + dayStamp();
Path path = Paths.get(fn);
return Files.newOutputStream(path, CREATE, APPEND);
}
- public static void nowLoggingTo(String filename) {
+ public static boolean nowLoggingTo(String filename) {
if (filename.contains("\n")) {
throw new IllegalArgumentException("Cannot use filename with newline: "+filename);
}
@@ -44,7 +52,8 @@ public class LogFileDb {
out.write(data);
} catch (java.io.IOException e) {
System.err.println("Saving meta-data about logfile "+filename+" failed: "+e);
- // ignore
+ return false;
}
+ return true;
}
}
diff --git a/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java b/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java
index 4dd7bd0978c..021a12774e9 100644
--- a/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java
+++ b/vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java
@@ -3,8 +3,12 @@ package com.yahoo.log;
import java.io.File;
import static com.yahoo.vespa.defaults.Defaults.getDefaults;
+
+import com.yahoo.io.IOUtils;
import org.junit.Test;
+import static org.junit.Assert.assertTrue;
+
/**
* @author arnej
*/
@@ -14,16 +18,13 @@ public class LogFileDbTest {
public void canSave() {
System.err.println("VH: "+System.getenv("VESPA_HOME"));
File dir = new File(getDefaults().underVespaHome(LogFileDb.DBDIR));
- dir.mkdirs();
- if (dir.isDirectory()) {
- System.err.println("using directory: "+dir);
- new File(getDefaults().underVespaHome("logs/extra")).mkdirs();
- String fn = getDefaults().underVespaHome("logs/extra/foo-bar.log");
- LogFileDb.nowLoggingTo(fn);
- fn = getDefaults().underVespaHome("logs/extra/stamped-1.log");
- LogFileDb.nowLoggingTo(fn);
- } else {
- System.err.println("cannot create directory: "+dir);
- }
+ assertTrue(!dir.exists() || IOUtils.recursiveDeleteDir(dir));
+ System.err.println("using directory: "+dir);
+ File extraDir = new File(getDefaults().underVespaHome("logs/extra"));
+ assertTrue(!extraDir.exists() || IOUtils.recursiveDeleteDir(extraDir));
+ String fn = getDefaults().underVespaHome("logs/extra/foo-bar.log");
+ assertTrue(LogFileDb.nowLoggingTo(fn));
+ fn = getDefaults().underVespaHome("logs/extra/stamped-1.log");
+ assertTrue(LogFileDb.nowLoggingTo(fn));
}
}