From 24effd9041dd89c8842a3cee211467649926807e Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Mon, 27 Sep 2021 13:15:29 +0200 Subject: [PATCH] Fix deletion of repositories from search index (#1813) --- gradle/changelog/repository_index.yaml | 2 ++ .../sonia/scm/repository/RepositoryIndexer.java | 13 +++++++++---- .../sonia/scm/repository/RepositoryIndexerTest.java | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 gradle/changelog/repository_index.yaml diff --git a/gradle/changelog/repository_index.yaml b/gradle/changelog/repository_index.yaml new file mode 100644 index 0000000000..bb018a3db6 --- /dev/null +++ b/gradle/changelog/repository_index.yaml @@ -0,0 +1,2 @@ +- type: Fixed + description: Deletion of repositories from search index ([#1813](https://github.com/scm-manager/scm-manager/pull/1813)) diff --git a/scm-webapp/src/main/java/sonia/scm/repository/RepositoryIndexer.java b/scm-webapp/src/main/java/sonia/scm/repository/RepositoryIndexer.java index 28b07d99e6..4f3158b307 100644 --- a/scm-webapp/src/main/java/sonia/scm/repository/RepositoryIndexer.java +++ b/scm-webapp/src/main/java/sonia/scm/repository/RepositoryIndexer.java @@ -43,7 +43,7 @@ import javax.inject.Singleton; public class RepositoryIndexer implements Indexer { @VisibleForTesting - static final int VERSION = 3; + static final int VERSION = 4; private final SearchEngine searchEngine; @@ -92,7 +92,7 @@ public class RepositoryIndexer implements Indexer { public SerializableIndexTask createDeleteTask(Repository repository) { return index -> { if (Repository.class.equals(index.getDetails().getType())) { - index.delete().byId(Id.of(Repository.class, repository.getId())); + index.delete().byId(id(repository)); } else { index.delete().by(Repository.class, repository).execute(); } @@ -101,9 +101,14 @@ public class RepositoryIndexer implements Indexer { private static void store(Index index, Repository repository) { index.store( - Id.of(Repository.class, repository).and(repository), + id(repository), RepositoryPermissions.read(repository).asShiroString(), - repository); + repository + ); + } + + private static Id id(Repository repository) { + return Id.of(Repository.class, repository).and(repository); } public static class ReIndexAll extends ReIndexAllTask { diff --git a/scm-webapp/src/test/java/sonia/scm/repository/RepositoryIndexerTest.java b/scm-webapp/src/test/java/sonia/scm/repository/RepositoryIndexerTest.java index 6556c5fa77..4af57403bb 100644 --- a/scm-webapp/src/test/java/sonia/scm/repository/RepositoryIndexerTest.java +++ b/scm-webapp/src/test/java/sonia/scm/repository/RepositoryIndexerTest.java @@ -97,7 +97,7 @@ class RepositoryIndexerTest { when(index.getDetails().getType()).then(ic -> Repository.class); indexer.createDeleteTask(heartOfGold).update(index); - verify(index.delete()).byId(Id.of(Repository.class, heartOfGold)); + verify(index.delete()).byId(Id.of(Repository.class, heartOfGold).and(heartOfGold)); } @Test