From 53ea86cd7be3859ff741ea2b9760396ffabf5fe0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Hugo=20Ar=C3=A8s?= Date: Tue, 8 Sep 2015 09:21:31 -0400 Subject: [PATCH] Fix RefDirectory not closing resources MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- .../eclipse/jgit/internal/storage/file/RefDirectory.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 -- 2.39.5