diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2019-05-23 08:02:32 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2019-05-23 08:39:02 +0000 |
commit | 774ade904e6301e64aa2ecc59f053d334f4dd94d (patch) | |
tree | 8e796efba2e75b472098baba26f431cde44a1af6 | |
parent | edd9fef6908ddc2daae8ba50a0e866e27c002719 (diff) |
ignore files not matching date pattern regexp.
-rw-r--r-- | logserver/src/main/java/com/yahoo/logserver/handlers/archive/FilesArchived.java | 15 | ||||
-rw-r--r-- | logserver/src/test/java/com/yahoo/logserver/handlers/archive/FilesArchivedTestCase.java | 4 |
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); } |