Browse Source

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 <hugo.ares@ericsson.com>
stable-4.4
Hugo Arès 9 years ago committed by Matthias Sohn
parent
commit
53ea86cd7b
  1. 6
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java

6
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java

@ -203,10 +203,10 @@ public class RefDirectory extends RefDatabase {
@Override @Override
public void close() { public void close() {
// We have no resources to close. clearReferences();
} }
void rescan() { private void clearReferences() {
looseRefs.set(RefList.<LooseRef> emptyList()); looseRefs.set(RefList.<LooseRef> emptyList());
packedRefs.set(PackedRefList.NO_PACKED_REFS); packedRefs.set(PackedRefList.NO_PACKED_REFS);
} }
@ -214,7 +214,7 @@ public class RefDirectory extends RefDatabase {
@Override @Override
public void refresh() { public void refresh() {
super.refresh(); super.refresh();
rescan(); clearReferences();
} }
@Override @Override

Loading…
Cancel
Save