Close Repository object when fetching changes from NoteDb Avoiding leaking an open Repository object when fetching the list of changes to delete from NoteDb. Use the try-with-resource pattern for opening the repository and then close it automatically when done. Release-Notes: skip Change-Id: I7c67e3ae47a1afe261eaccea1ed3a8a89cf297f4
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java index b84a9c7..f8ca83c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java +++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
@@ -38,6 +38,7 @@ import java.io.IOException; import java.util.List; import org.eclipse.jgit.errors.ConfigInvalidException; +import org.eclipse.jgit.lib.Repository; public class DatabaseDeleteHandler { private static final FluentLogger log = FluentLogger.forEnclosingClass(); @@ -73,15 +74,17 @@ private List<Change.Id> getChangesListFromNoteDb(Project project) throws IOException { Project.NameKey projectKey = project.getNameKey(); - List<Change.Id> changeIds = - schemaFactoryNoteDb - .scan(repoManager.openRepository(projectKey), projectKey) - .map(ChangeNotesResult::id) - .collect(toList()); - log.atFine().log( - "Number of changes in noteDb related to project %s are %d", - projectKey.get(), changeIds.size()); - return changeIds; + try(Repository repo = repoManager.openRepository(projectKey)) { + List<Change.Id> changeIds = + schemaFactoryNoteDb + .scan(repo, projectKey) + .map(ChangeNotesResult::id) + .collect(toList()); + log.atFine().log( + "Number of changes in noteDb related to project %s are %d", + projectKey.get(), changeIds.size()); + return changeIds; + } } private void deleteChangesFromIndex(Project project) {