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,