Clear caches before rebuilding index

This is a follow-up to #202

Pushed-by: Rene Pfeuffer<rene.pfeuffer@cloudogu.com>
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
This commit is contained in:
Rene Pfeuffer
2023-11-07 08:58:49 +01:00
parent f333a0bf18
commit fd53c17e9e
3 changed files with 12 additions and 2 deletions

View File

@@ -97,6 +97,7 @@ public class InvalidationResource {
)
public void invalidateSearchIndex() {
ConfigurationPermissions.write("global").check();
invalidateCaches();
indexRebuilder.rebuildAll();
}
}

View File

@@ -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<Indexer> indexers;
private final RepositoryManager repositoryManager;
@Inject
public IndexRebuilder(SearchEngine searchEngine, Set<Indexer> indexers) {
public IndexRebuilder(SearchEngine searchEngine, Set<Indexer> 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))
);
}
}
}

View File

@@ -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 {