From: Hugo Arès Date: Tue, 8 Sep 2015 13:21:31 +0000 (-0400) Subject: Fix RefDirectory not closing resources X-Git-Tag: v4.3.0.201604071810-r~2^2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=53ea86cd7be3859ff741ea2b9760396ffabf5fe0;p=jgit.git Fix RefDirectory not closing resources When repositories are opened using the RepositoryCache, they are kept in memory and when the repository usage counter reaches 0, the Repository.close method is called which then calls close method on its reference and object databases. The problem is that RefDirectory.close method was a no-op and the reference database was kept in memory. This problem is only happening when opening a repository using the RepositoryCache because it never evicts repositories, it's just calling the close method. Change-Id: Iacb961de8e8b1f5b37824bf0d1a4caf4c6f1233f Signed-off-by: Hugo Arès --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java index b8c2fb4a51..6f3166a680 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java @@ -203,10 +203,10 @@ public class RefDirectory extends RefDatabase { @Override public void close() { - // We have no resources to close. + clearReferences(); } - void rescan() { + private void clearReferences() { looseRefs.set(RefList. emptyList()); packedRefs.set(PackedRefList.NO_PACKED_REFS); } @@ -214,7 +214,7 @@ public class RefDirectory extends RefDatabase { @Override public void refresh() { super.refresh(); - rescan(); + clearReferences(); } @Override