]> source.dussan.org Git - jgit.git/commitdiff
Fix garbage collection failing to delete pack file 18/182018/7
authorandrewxian2000 <andrew.xian2000@gmail.com>
Mon, 14 Jun 2021 21:58:52 +0000 (09:58 +1200)
committerMatthias Sohn <matthias.sohn@sap.com>
Tue, 22 Jun 2021 12:16:30 +0000 (14:16 +0200)
The loosen() method has opened pack file and the open pack file handle
may prevent it from being deleted e.g. on Windows. Fix this by closing
the pack file only after loosen() finished.

Bug: 574178
Change-Id: Icd59931a218d84c9c97b450eea87b21ed01248ff
Signed-off-by: andrew.xian2000@gmail.com
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java

index 9ffff9f6628dea6ce8f921d502c716cd4e11645c..40c075ec5e53ce65a6a9dddbdefc018440d6b7cd 100644 (file)
@@ -344,10 +344,10 @@ public class GC {
                                        && repo.getFS()
                                                        .lastModifiedInstant(oldPack.getPackFile())
                                                        .toEpochMilli() < packExpireDate) {
-                               oldPack.close();
                                if (shouldLoosen) {
                                        loosen(inserter, reader, oldPack, ids);
                                }
+                               oldPack.close();
                                prunePack(oldPack.getPackFile());
                        }
                }