Don't leak Repository and RevWalk instances during notedb parsing
Change-Id: Ia8d99f0387206295678234a549dc22a062e5655b
This commit is contained in:
@@ -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<ChangeNotes> {
|
||||
}
|
||||
}
|
||||
|
||||
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<ChangeNotes> {
|
||||
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<ChangeNotes> {
|
||||
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) {
|
||||
|
Reference in New Issue
Block a user