Browse Source

SONAR-10689 add INFO log when dropping ES index in migration

tags/7.5
Simon Brandhof 6 years ago
parent
commit
838ad5e985

+ 7
- 1
server/sonar-server/src/main/java/org/sonar/server/es/MigrationEsClientImpl.java View File

@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Set;
import java.util.stream.Stream;
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
import org.sonar.api.utils.log.Loggers;
import org.sonar.server.platform.db.migration.es.MigrationEsClient;

public class MigrationEsClientImpl implements MigrationEsClient {
@@ -41,6 +42,11 @@ public class MigrationEsClientImpl implements MigrationEsClient {
Stream.concat(Stream.of(name), Arrays.stream(otherNames))
.distinct()
.filter(existingIndices::contains)
.forEach(index -> client.nativeClient().admin().indices().prepareDelete(index).get());
.forEach(this::deleteIndex);
}

private void deleteIndex(String index) {
Loggers.get(getClass()).info("Drop Elasticsearch index [{}]", index);
client.nativeClient().admin().indices().prepareDelete(index).get();
}
}

+ 9
- 0
server/sonar-server/src/test/java/org/sonar/server/es/MigrationEsClientImplTest.java View File

@@ -24,12 +24,16 @@ import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.internal.MapSettings;
import org.sonar.api.utils.log.LogTester;
import org.sonar.api.utils.log.LoggerLevel;
import org.sonar.server.platform.db.migration.es.MigrationEsClient;

import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.server.es.NewIndex.SettingsConfiguration.newBuilder;

public class MigrationEsClientImplTest {
@Rule
public LogTester logTester = new LogTester();
@Rule
public EsTester es = EsTester.createCustom(
new SimpleIndexDefinition("a"),
@@ -45,6 +49,8 @@ public class MigrationEsClientImplTest {
assertThat(loadExistingIndices())
.doesNotContain("a")
.contains("b", "c");
assertThat(logTester.logs(LoggerLevel.INFO))
.contains("Drop Elasticsearch index [a]");
}

@Test
@@ -54,6 +60,9 @@ public class MigrationEsClientImplTest {
assertThat(loadExistingIndices())
.doesNotContain("a", "c")
.contains("b");
assertThat(logTester.logs(LoggerLevel.INFO))
.contains("Drop Elasticsearch index [a]", "Drop Elasticsearch index [c]")
.doesNotContain("Drop Elasticsearch index [xxx]");
}

private Iterator<String> loadExistingIndices() {

Loading…
Cancel
Save