diff --git a/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java b/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java
index 8411568..1a08131 100644
--- a/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java
+++ b/java/com/google/gerrit/plugins/codeowners/validation/CodeOwnerConfigValidator.java
@@ -306,15 +306,15 @@
       } else {
         try (InMemoryInserter ins = new InMemoryInserter(repository);
             ObjectReader reader = ins.newReader();
-            RevWalk rw = new RevWalk(reader)) {
+            RevWalk rw = new RevWalk(reader);
+            RepoView repoView = new RepoView(repository, rw, ins)) {
           ChangeNotes changeNotes =
               changeNotesFactory.create(projectState.getNameKey(), commit.change().getId());
           PatchSet patchSet = patchSetUtil.get(changeNotes, patchSetId);
           IdentifiedUser patchSetUploader = userFactory.create(patchSet.uploader());
           validationResult =
               validateCodeOwnerConfig(
-                  diffOperationsForCommitValidationFactory.create(
-                      new RepoView(repository, rw, ins), ins),
+                  diffOperationsForCommitValidationFactory.create(repoView, ins),
                   branchNameKey,
                   commit,
                   patchSetUploader,
diff --git a/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java b/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java
index c3dece0..479ad1d 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/backend/config/CodeOwnersPluginConfigValidatorTest.java
@@ -66,7 +66,8 @@
             new TestRepository<>(repoManager.openRepository(project));
         ObjectInserter ins = testRepo.getRepository().newObjectInserter();
         ObjectReader reader = ins.newReader();
-        RevWalk revWalk = new RevWalk(reader)) {
+        RevWalk revWalk = new RevWalk(reader);
+        RepoView repoView = new RepoView(testRepo.getRepository(), revWalk, ins)) {
       RevCommit commit =
           testRepo
               .commit()
@@ -74,20 +75,21 @@
               .add("project.config", "INVALID")
               .create();
 
-      CommitReceivedEvent receiveEvent = new CommitReceivedEvent();
-      receiveEvent.project =
-          projectCache.get(project).orElseThrow(illegalState(project)).getProject();
-      receiveEvent.refName = RefNames.REFS_CONFIG;
-      receiveEvent.commit = commit;
-      receiveEvent.revWalk = testRepo.getRevWalk();
-      receiveEvent.repoConfig = new Config();
-      receiveEvent.diffOperations =
-          diffOperationsForCommitValidationFactory.create(
-              new RepoView(testRepo.getRepository(), revWalk, ins), ins);
-      CommitValidationException exception =
-          assertThrows(
-              CommitValidationException.class,
-              () -> codeOwnersPluginConfigValidator.onCommitReceived(receiveEvent));
+      CommitValidationException exception;
+      try (CommitReceivedEvent receiveEvent = new CommitReceivedEvent()) {
+        receiveEvent.project =
+            projectCache.get(project).orElseThrow(illegalState(project)).getProject();
+        receiveEvent.refName = RefNames.REFS_CONFIG;
+        receiveEvent.commit = commit;
+        receiveEvent.revWalk = testRepo.getRevWalk();
+        receiveEvent.repoConfig = new Config();
+        receiveEvent.diffOperations =
+            diffOperationsForCommitValidationFactory.create(repoView, ins);
+        exception =
+            assertThrows(
+                CommitValidationException.class,
+                () -> codeOwnersPluginConfigValidator.onCommitReceived(receiveEvent));
+      }
       assertThat(exception)
           .hasMessageThat()
           .isEqualTo(
