diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidationResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidationResource.java index 2ac041e7ca..c0a4ccb093 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/InvalidationResource.java @@ -97,6 +97,7 @@ public class InvalidationResource { ) public void invalidateSearchIndex() { ConfigurationPermissions.write("global").check(); + invalidateCaches(); indexRebuilder.rebuildAll(); } } diff --git a/scm-webapp/src/main/java/sonia/scm/search/IndexRebuilder.java b/scm-webapp/src/main/java/sonia/scm/search/IndexRebuilder.java index 51fdbf25ec..249e9b5d30 100644 --- a/scm-webapp/src/main/java/sonia/scm/search/IndexRebuilder.java +++ b/scm-webapp/src/main/java/sonia/scm/search/IndexRebuilder.java @@ -24,6 +24,9 @@ package sonia.scm.search; +import sonia.scm.event.ScmEventBus; +import sonia.scm.repository.RepositoryManager; + import javax.inject.Inject; import java.util.Set; @@ -31,16 +34,21 @@ public class IndexRebuilder { private final SearchEngine searchEngine; private final Set indexers; + private final RepositoryManager repositoryManager; @Inject - public IndexRebuilder(SearchEngine searchEngine, Set indexers) { + public IndexRebuilder(SearchEngine searchEngine, Set indexers, RepositoryManager repositoryManager) { this.searchEngine = searchEngine; this.indexers = indexers; + this.repositoryManager = repositoryManager; } public void rebuildAll() { for (Indexer indexer : indexers) { searchEngine.forType(indexer.getType()).update(indexer.getReIndexAllTask()); + repositoryManager.getAll().forEach( + repository -> ScmEventBus.getInstance().post(new ReindexRepositoryEvent(repository)) + ); } } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InvalidationResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InvalidationResourceTest.java index 30e80216e9..4aa6b24306 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InvalidationResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/InvalidationResourceTest.java @@ -107,12 +107,13 @@ class InvalidationResourceTest { @Test @SubjectAware(permissions = {"configuration:write:global"}) - void shouldReIndexAll() throws URISyntaxException { + void shouldReIndexAllWithClearedCaches() throws URISyntaxException { MockHttpResponse response = invokeReIndex(); assertThat(response.getStatus()).isEqualTo(204); verify(indexRebuilder).rebuildAll(); + verify(cacheManager).clearAllCaches(); } private MockHttpResponse invokeReIndex() throws URISyntaxException {