In order to limit the number of directories we check for emptiness only
consider fanout directories which contained unreferenced loose objects
we deleted in the same gc run.
Change-Id: Idf8d512867ee1c8ed40bd55752122ce83a98ffa2
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
// loose objects. Make a last check, though, to avoid deleting objects
// that could have been referenced while the candidates list was being
// built (by an incoming push, for example).
+ Set<File> touchedFanout = new HashSet<>();
for (File f : deletionCandidates.values()) {
if (f.lastModified() < expireDate) {
f.delete();
+ touchedFanout.add(f.getParentFile());
}
}
+ for (File f : touchedFanout) {
+ FileUtils.delete(f,
+ FileUtils.EMPTY_DIRECTORIES_ONLY | FileUtils.IGNORE_ERRORS);
+ }
+
repo.getObjectDatabase().close();
}