Ensure that RevWalk in SubmoduleOp is released
Change-Id: I26fd8e7b1736a2f757e533a9db95590d482cd992
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
index 2e70621..ccb91a3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/SubmoduleOp.java
@@ -365,14 +365,17 @@
private static DirCache readTree(final Repository pdb, final Ref branch)
throws MissingObjectException, IncorrectObjectTypeException, IOException {
final RevWalk rw = new RevWalk(pdb);
-
- final DirCache dc = DirCache.newInCore();
- final DirCacheBuilder b = dc.builder();
- b.addTree(new byte[0], // no prefix path
- DirCacheEntry.STAGE_0, // standard stage
- pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
- b.finish();
- return dc;
+ try {
+ final DirCache dc = DirCache.newInCore();
+ final DirCacheBuilder b = dc.builder();
+ b.addTree(new byte[0], // no prefix path
+ DirCacheEntry.STAGE_0, // standard stage
+ pdb.newObjectReader(), rw.parseTree(branch.getObjectId()));
+ b.finish();
+ return dc;
+ } finally {
+ rw.release();
+ }
}
private static void logAndThrowSubmoduleException(final String errorMsg,