summaryrefslogtreecommitdiffstats
path: root/vespalog
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-10-10 13:29:05 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-10-10 13:31:11 +0200
commit8c20acd50f36f475f34f9699bf45f45241d7b4da (patch)
tree7b57dbda37063660210ea73ad6fe009eb8bc35e1 /vespalog
parenta5c538043d29e36b3802efd8e16652540ae0d5e4 (diff)
LogFileDB must ensure directory exists.
Diffstat (limited to 'vespalog')
-rw-r--r--vespalog/src/main/java/com/yahoo/log/LogFileDb.java14
-rw-r--r--vespalog/src/test/java/com/yahoo/log/LogFileDbTest.java23
2 files changed, 23 insertions, 14 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..4d26f7c0da9 100644
--- a/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
+++ b/vespalog/src/main/java/com/yahoo/log/LogFileDb.java
@@ -4,6 +4,7 @@ package com.yahoo.log;
import static java.nio.charset.StandardCharsets.UTF_8;
import static java.nio.file.StandardOpenOption.*;
+import java.io.File;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -28,12 +29,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 +51,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));
}
}