/** * prunes the list of index files such that only the latest del generation files are contained. */ private void pruneOldDeleteGenerations(Set<Path> files) { final TreeSet<Path> delFiles = new TreeSet<>(); for (Path file : files) { if (file.getFileName().toString().endsWith(".liv")) { delFiles.add(file); } } Path last = null; for (Path current : delFiles) { if (last != null) { final String newSegmentName = IndexFileNames.parseSegmentName(current.getFileName().toString()); final String oldSegmentName = IndexFileNames.parseSegmentName(last.getFileName().toString()); if (newSegmentName.equals(oldSegmentName)) { int oldGen = Integer.parseInt( IndexFileNames.stripExtension( IndexFileNames.stripSegmentName(last.getFileName().toString())) .replace("_", ""), Character.MAX_RADIX); int newGen = Integer.parseInt( IndexFileNames.stripExtension( IndexFileNames.stripSegmentName(current.getFileName().toString())) .replace("_", ""), Character.MAX_RADIX); if (newGen > oldGen) { files.remove(last); } else { files.remove(current); continue; } } } last = current; } }