This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit b66929e9a1cd9a7ae938d89a98c5eae0b6b1cf16 Author: Antoine DUPRAT <adup...@linagora.com> AuthorDate: Thu Oct 10 13:20:55 2019 +0200 JAMES-2922 Set the index.write.wait_for_active_shards property while creating indices --- .../james/backends/es/IndexCreationFactory.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/IndexCreationFactory.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/IndexCreationFactory.java index 18bfbf8..2910c91 100644 --- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/IndexCreationFactory.java +++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/IndexCreationFactory.java @@ -45,12 +45,14 @@ public class IndexCreationFactory { public static class AliasSpecificationStep { private final int nbShards; private final int nbReplica; + private final int waitForActiveShards; private final IndexName indexName; private final ImmutableList.Builder<AliasName> aliases; - AliasSpecificationStep(int nbShards, int nbReplica, IndexName indexName) { + AliasSpecificationStep(int nbShards, int nbReplica, int waitForActiveShards, IndexName indexName) { this.nbShards = nbShards; this.nbReplica = nbReplica; + this.waitForActiveShards = waitForActiveShards; this.indexName = indexName; this.aliases = ImmutableList.builder(); } @@ -62,19 +64,21 @@ public class IndexCreationFactory { } public RestHighLevelClient createIndexAndAliases(RestHighLevelClient client) { - return new IndexCreationPerformer(nbShards, nbReplica, indexName, aliases.build()).createIndexAndAliases(client); + return new IndexCreationPerformer(nbShards, nbReplica, waitForActiveShards, indexName, aliases.build()).createIndexAndAliases(client); } } static class IndexCreationPerformer { private final int nbShards; private final int nbReplica; + private final int waitForActiveShards; private final IndexName indexName; private final ImmutableList<AliasName> aliases; - public IndexCreationPerformer(int nbShards, int nbReplica, IndexName indexName, ImmutableList<AliasName> aliases) { + public IndexCreationPerformer(int nbShards, int nbReplica, int waitForActiveShards, IndexName indexName, ImmutableList<AliasName> aliases) { this.nbShards = nbShards; this.nbReplica = nbReplica; + this.waitForActiveShards = waitForActiveShards; this.indexName = indexName; this.aliases = aliases; } @@ -82,7 +86,7 @@ public class IndexCreationFactory { public RestHighLevelClient createIndexAndAliases(RestHighLevelClient client) { Preconditions.checkNotNull(indexName); try { - createIndexIfNeeded(client, indexName, generateSetting(nbShards, nbReplica)); + createIndexIfNeeded(client, indexName, generateSetting(nbShards, nbReplica, waitForActiveShards)); aliases.forEach(Throwing.<AliasName>consumer(alias -> createAliasIfNeeded(client, indexName, alias)) .sneakyThrow()); } catch (IOException e) { @@ -123,12 +127,13 @@ public class IndexCreationFactory { } } - private XContentBuilder generateSetting(int nbShards, int nbReplica) throws IOException { + private XContentBuilder generateSetting(int nbShards, int nbReplica, int waitForActiveShards) throws IOException { return jsonBuilder() .startObject() .startObject("settings") .field("number_of_shards", nbShards) .field("number_of_replicas", nbReplica) + .field("index.write.wait_for_active_shards", waitForActiveShards) .startObject("analysis") .startObject("normalizer") .startObject(CASE_INSENSITIVE) @@ -175,6 +180,7 @@ public class IndexCreationFactory { private final int nbShards; private final int nbReplica; + private final int waitForActiveShards; public static final String CASE_INSENSITIVE = "case_insensitive"; public static final String KEEP_MAIL_AND_URL = "keep_mail_and_url"; @@ -185,10 +191,11 @@ public class IndexCreationFactory { public IndexCreationFactory(ElasticSearchConfiguration configuration) { this.nbShards = configuration.getNbShards(); this.nbReplica = configuration.getNbReplica(); + this.waitForActiveShards = configuration.getWaitForActiveShards(); } public AliasSpecificationStep useIndex(IndexName indexName) { Preconditions.checkNotNull(indexName); - return new AliasSpecificationStep(nbShards, nbReplica, indexName); + return new AliasSpecificationStep(nbShards, nbReplica, waitForActiveShards, indexName); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org