protected Collection<File> getColumnfamilyFiles(Instant snapshotInstant, File columnfamilyDir) { // Find all the files in columnfamily folder which is : // 1. Not a temp file. // 2. Is a file. (we don't care about directories) // 3. Is older than snapshot time, as new files keep getting created after taking a // snapshot. IOFileFilter tmpFileFilter1 = FileFilterUtils.suffixFileFilter(TMP_EXT); IOFileFilter tmpFileFilter2 = FileFilterUtils.asFileFilter( pathname -> tmpFilePattern.matcher(pathname.getName()).matches()); IOFileFilter tmpFileFilter = FileFilterUtils.or(tmpFileFilter1, tmpFileFilter2); // Here we are allowing files which were more than // @link{IConfiguration#getForgottenFileGracePeriodDays}. We do this to allow cassandra // to clean up any files which were generated as part of repair/compaction and cleanup // thread has not already deleted. // Refer to https://issues.apache.org/jira/browse/CASSANDRA-6756 and // https://issues.apache.org/jira/browse/CASSANDRA-7066 // for more information. IOFileFilter ageFilter = FileFilterUtils.ageFileFilter( snapshotInstant .minus(config.getForgottenFileGracePeriodDays(), ChronoUnit.DAYS) .toEpochMilli()); IOFileFilter fileFilter = FileFilterUtils.and( FileFilterUtils.notFileFilter(tmpFileFilter), FileFilterUtils.fileFileFilter(), ageFilter); return FileUtils.listFiles(columnfamilyDir, fileFilter, null); }
final IOFileFilter filter1 = FileFilterUtils.ageFileFilter(now); final IOFileFilter filter2 = FileFilterUtils.ageFileFilter(now, true); final IOFileFilter filter3 = FileFilterUtils.ageFileFilter(now, false); final IOFileFilter filter4 = FileFilterUtils.ageFileFilter(date); final IOFileFilter filter5 = FileFilterUtils.ageFileFilter(date, true); final IOFileFilter filter6 = FileFilterUtils.ageFileFilter(date, false); final IOFileFilter filter7 = FileFilterUtils.ageFileFilter(reference); final IOFileFilter filter8 = FileFilterUtils.ageFileFilter(reference, true); final IOFileFilter filter9 = FileFilterUtils.ageFileFilter(reference, false);
private IOFileFilter getFileAgeDiffFilter() { IOFileFilter result = FileFilterUtils.trueFileFilter(); if (backupType == BackupType.DIFF) { result = FileFilterUtils.ageFileFilter(latestFullBackupDate, false); } return result; }