diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java index 6ad88faae1..fe675273fb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/ChangeNotes.java @@ -44,8 +44,8 @@ import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.PatchLineComment; -import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchLineComment.Status; +import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet.Id; import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.PatchSetApproval.LabelId; @@ -152,7 +152,7 @@ public class ChangeNotes extends AbstractChangeNotes { } } - private static class Parser { + private static class Parser implements AutoCloseable { private final Change.Id changeId; private final ObjectId tip; private final RevWalk walk; @@ -184,6 +184,11 @@ public class ChangeNotes extends AbstractChangeNotes { commentsForBase = ArrayListMultimap.create(); } + @Override + public void close() { + repo.close(); + } + private void parseAll() throws ConfigInvalidException, IOException, ParseException { walk.markStart(walk.parseCommit(tip)); for (RevCommit commit : walk) { @@ -626,9 +631,7 @@ public class ChangeNotes extends AbstractChangeNotes { return; } RevWalk walk = new RevWalk(reader); - try { - Change change = getChange(); - Parser parser = new Parser(change, rev, walk, repoManager); + try (Parser parser = new Parser(change, rev, walk, repoManager)) { parser.parseAll(); if (parser.status != null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java index 918f9234e1..49542a7320 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/DraftCommentNotes.java @@ -68,7 +68,7 @@ public class DraftCommentNotes extends AbstractChangeNotes { } } - private static class Parser { + private static class Parser implements AutoCloseable { private final Change.Id changeId; private final ObjectId tip; private final RevWalk walk; @@ -92,6 +92,11 @@ public class DraftCommentNotes extends AbstractChangeNotes { draftPsComments = ArrayListMultimap.create(); } + @Override + public void close() { + repo.close(); + } + private void parseDraftComments() throws IOException, ConfigInvalidException { walk.markStart(walk.parseCommit(tip)); noteMap = CommentsInNotesUtil.parseCommentsFromNotes(repo, @@ -167,13 +172,16 @@ public class DraftCommentNotes extends AbstractChangeNotes { } RevWalk walk = new RevWalk(reader); - Parser parser = new Parser(getChangeId(), walk, rev, repoManager, - draftsProject, author); - parser.parseDraftComments(); + try (Parser parser = new Parser(getChangeId(), walk, rev, repoManager, + draftsProject, author)) { + parser.parseDraftComments(); - buildCommentTable(draftBaseComments, parser.draftBaseComments); - buildCommentTable(draftPsComments, parser.draftPsComments); - noteMap = parser.noteMap; + buildCommentTable(draftBaseComments, parser.draftBaseComments); + buildCommentTable(draftPsComments, parser.draftPsComments); + noteMap = parser.noteMap; + } finally { + walk.release(); + } } @Override