aboutsummaryrefslogtreecommitdiffstats
path: root/logserver
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2019-05-23 08:02:32 +0000
committerArne Juul <arnej@yahoo-inc.com>2019-05-23 08:39:02 +0000
commit774ade904e6301e64aa2ecc59f053d334f4dd94d (patch)
tree8e796efba2e75b472098baba26f431cde44a1af6 /logserver
parentedd9fef6908ddc2daae8ba50a0e866e27c002719 (diff)
ignore files not matching date pattern regexp.
Diffstat (limited to 'logserver')
-rw-r--r--logserver/src/main/java/com/yahoo/logserver/handlers/archive/FilesArchived.java15
-rw-r--r--logserver/src/test/java/com/yahoo/logserver/handlers/archive/FilesArchivedTestCase.java4
2 files changed, 18 insertions, 1 deletions
diff --git a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/FilesArchived.java b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/FilesArchived.java
index ff082f7efba..fbc4a6fb6bb 100644
--- a/logserver/src/main/java/com/yahoo/logserver/handlers/archive/FilesArchived.java
+++ b/logserver/src/main/java/com/yahoo/logserver/handlers/archive/FilesArchived.java
@@ -11,6 +11,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.regex.Pattern;
import java.util.zip.GZIPOutputStream;
@@ -140,6 +141,13 @@ public class FilesArchived {
return sum;
}
+ private static Pattern dateFormatRegexp = Pattern.compile(".*/" +
+ "[0-9][0-9][0-9][0-9]/" + // year
+ "[0-9][0-9]/" + // month
+ "[0-9][0-9]/" + // day
+ "[0-9][0-9]-" + // hour
+ "[0-9].*"); // generation
+
private static List<LogFile> scanDir(File top) {
List<LogFile> retval = new ArrayList<>();
String[] names = top.list();
@@ -147,7 +155,12 @@ public class FilesArchived {
for (String name : names) {
File sub = new File(top, name);
if (sub.isFile()) {
- retval.add(new LogFile(sub));
+ String pathName = sub.toString();
+ if (dateFormatRegexp.matcher(pathName).matches()) {
+ retval.add(new LogFile(sub));
+ } else {
+ log.warning("skipping file not matching log archive pattern: "+pathName);
+ }
} else if (sub.isDirectory()) {
for (LogFile subFile : scanDir(sub)) {
retval.add(subFile);
diff --git a/logserver/src/test/java/com/yahoo/logserver/handlers/archive/FilesArchivedTestCase.java b/logserver/src/test/java/com/yahoo/logserver/handlers/archive/FilesArchivedTestCase.java
index c4f60e36d64..053e8613937 100644
--- a/logserver/src/test/java/com/yahoo/logserver/handlers/archive/FilesArchivedTestCase.java
+++ b/logserver/src/test/java/com/yahoo/logserver/handlers/archive/FilesArchivedTestCase.java
@@ -44,6 +44,8 @@ public class FilesArchivedTestCase {
public void testMaintenance() throws java.io.IOException {
File tmpDir = temporaryFolder.newFolder();
try {
+ makeLogfile(tmpDir, "foo/bar", 35*24); // non-matching file
+
makeLogfile(tmpDir, "2018/11/20/13-0", 35*24);
makeLogfile(tmpDir, "2018/11/21/13-0", 34*24);
makeLogfile(tmpDir, "2018/12/28/13-0", 3*24);
@@ -55,6 +57,7 @@ public class FilesArchivedTestCase {
dumpFiles(tmpDir, "before archive maintenance");
FilesArchived a = new FilesArchived(tmpDir);
dumpFiles(tmpDir, "after archive maintenance");
+ checkExist(tmpDir, "foo/bar");
checkExist(tmpDir, "2018/12/31/17-0");
checkExist(tmpDir, "2018/12/31/16-0");
checkExist(tmpDir, "2018/12/31/14-0.gz");
@@ -90,6 +93,7 @@ public class FilesArchivedTestCase {
checkNoExist(tmpDir, "2018/12/31/16-0");
checkNoExist(tmpDir, "2018/12/31/17-0");
+ checkExist(tmpDir, "foo/bar");
} finally {
IOUtils.recursiveDeleteDir(tmpDir);
}