GC: delete empty directories after purging loose objects
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>
This commit is contained in:
parent
a11bb03127
commit
18cda3888c
|
@ -475,12 +475,19 @@ public void prune(Set<ObjectId> objectsToKeep) throws IOException,
|
|||
// 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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue