protected void splitUp(Tier tier, Job j) throws IOException { while (true) { Path[] files = tier.getCreationOutputFiles(Solver.underscoreFilter); if (files.length == 0) break; Path file = files[0]; String name = file.getName(); String ext = name.substring(name.lastIndexOf(".")); Tier nextTier = getTier(ext); if (!nextTier.filter.accept(file)) { throw new Error(nextTier.filter + " does not accept " + file); } updateEdges(tier, nextTier); tier.createTempFolder(); Path[] sameTier = tier.getCreationOutputFiles(nextTier.filter); assert Util.contains(sameTier, file); for (Path n : sameTier) tier.moveToTemp(n); long numPositions = recordsWritten(j, nextTier.num); putBack(tier, nextTier, numPositions); } }