@Override public void start() { // collect definitions IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); if (!config.getBoolean("sonar.internal.es.disableIndexes").orElse(false)) { for (IndexDefinition definition : defs) { definition.define(context); } for (Map.Entry<String, NewIndex> entry : context.getIndices().entrySet()) { byKey.put(entry.getKey(), new IndexDefinition.Index(entry.getValue())); } } }
@Test public void test_definition_of_index() { IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); underTest.define(context); assertThat(context.getIndices()).hasSize(1); NewIndex ruleIndex = context.getIndices().get("rules"); assertThat(ruleIndex).isNotNull(); assertThat(ruleIndex.getTypes().keySet()).containsOnly("activeRule", "ruleExtension", "rule"); // no cluster by default assertThat(ruleIndex.getSettings().get("index.number_of_shards")).isEqualTo("2"); assertThat(ruleIndex.getSettings().get("index.number_of_replicas")).isEqualTo("0"); }
@Test public void define() { ViewIndexDefinition def = new ViewIndexDefinition(new MapSettings().asConfig()); def.define(underTest); assertThat(underTest.getIndices()).hasSize(1); NewIndex index = underTest.getIndices().get("views"); assertThat(index).isNotNull(); assertThat(index.getTypes().keySet()).containsOnly("view"); assertThat(index.getSettings().get("index.number_of_shards")).isEqualTo("5"); assertThat(index.getSettings().get("index.number_of_replicas")).isEqualTo("0"); } }
@Override public void start() { // create the "metadata" index first if (!client.prepareIndicesExist(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()).get().isExists()) { IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); metadataIndexDefinition.define(context); NewIndex index = context.getIndices().values().iterator().next(); createIndex(new Index(index), false); } checkDbCompatibility(definitions.getIndices().values()); // create indices that do not exist or that have a new definition (different mapping, cluster enabled, ...) for (Index index : definitions.getIndices().values()) { boolean exists = client.prepareIndicesExist(index.getName()).get().isExists(); if (exists && !index.getName().equals(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()) && hasDefinitionChange(index)) { verifyNotBlueGreenDeployment(index.getName()); LOGGER.info("Delete Elasticsearch index {} (structure changed)", index.getName()); deleteIndex(index.getName()); exists = false; } if (!exists) { createIndex(index, true); } } }
@Override public void start() { // collect definitions IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); if (!config.getBoolean("sonar.internal.es.disableIndexes").orElse(false)) { for (IndexDefinition definition : defs) { definition.define(context); } for (Map.Entry<String, NewIndex> entry : context.getIndices().entrySet()) { byKey.put(entry.getKey(), new Index(entry.getValue())); } } }
for (NewIndex newIndex : context.getIndices().values()) { IndexDefinition.Index index = new IndexDefinition.Index(newIndex);
@Override public void start() { // create the "metadata" index first if (!client.prepareIndicesExist(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()).get().isExists()) { IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); metadataIndexDefinition.define(context); NewIndex index = context.getIndices().values().iterator().next(); createIndex(new Index(index), false); } checkDbCompatibility(definitions.getIndices().values()); // create indices that do not exist or that have a new definition (different mapping, cluster enabled, ...) for (Index index : definitions.getIndices().values()) { boolean exists = client.prepareIndicesExist(index.getName()).get().isExists(); if (exists && !index.getName().equals(MetadataIndexDefinition.INDEX_TYPE_METADATA.getIndex()) && hasDefinitionChange(index)) { verifyNotBlueGreenDeployment(index.getName()); LOGGER.info("Delete Elasticsearch index {} (structure changed)", index.getName()); deleteIndex(index.getName()); exists = false; } if (!exists) { createIndex(index, true); } } }
@Test public void define() { IssueIndexDefinition def = new IssueIndexDefinition(new MapSettings().asConfig()); def.define(underTest); assertThat(underTest.getIndices()).hasSize(1); NewIndex issuesIndex = underTest.getIndices().get("issues"); assertThat(issuesIndex).isNotNull(); assertThat(issuesIndex.getTypes().keySet()).containsOnly("issue", "authorization"); // no cluster by default assertThat(issuesIndex.getSettings().get("index.number_of_shards")).isEqualTo("5"); assertThat(issuesIndex.getSettings().get("index.number_of_replicas")).isEqualTo("0"); } }
@Test public void define() { UserIndexDefinition def = new UserIndexDefinition(new MapSettings().asConfig()); def.define(underTest); assertThat(underTest.getIndices()).hasSize(1); NewIndex index = underTest.getIndices().get("users"); assertThat(index).isNotNull(); assertThat(index.getTypes().keySet()).containsOnly("user"); // no cluster by default assertThat(index.getSettings().get("index.number_of_shards")).isEqualTo("1"); assertThat(index.getSettings().get("index.number_of_replicas")).isEqualTo("0"); } }
@Test public void enable_replica_if_clustering_is_enabled() { settings.setProperty(CLUSTER_ENABLED.getKey(), true); IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); underTest.define(context); NewIndex ruleIndex = context.getIndices().get("rules"); assertThat(ruleIndex.getSettings().get("index.number_of_replicas")).isEqualTo("1"); }
@Test public void create_indices() { IndexDefinition.IndexDefinitionContext context = new IndexDefinition.IndexDefinitionContext(); context.create("issues", emptySettingsConfiguration); context.create("measures", emptySettingsConfiguration); assertThat(context.getIndices().keySet()).containsOnly("issues", "measures"); }