diff --git a/metadata-io/src/main/java/com/linkedin/metadata/search/elasticsearch/indexbuilder/ESIndexBuilder.java b/metadata-io/src/main/java/com/linkedin/metadata/search/elasticsearch/indexbuilder/ESIndexBuilder.java index 648e61b6a9..4eb1f5312c 100644 --- a/metadata-io/src/main/java/com/linkedin/metadata/search/elasticsearch/indexbuilder/ESIndexBuilder.java +++ b/metadata-io/src/main/java/com/linkedin/metadata/search/elasticsearch/indexbuilder/ESIndexBuilder.java @@ -39,8 +39,8 @@ public class ESIndexBuilder { private final RestHighLevelClient searchClient; private final int numShards; private final int numReplicas; + private final int numRetries; - private static final int NUM_RETRIES = 3; private static final List SETTINGS_TO_COMPARE = ImmutableList.of("number_of_shards", "number_of_replicas"); public void buildIndex(String indexName, Map mappings, Map settings) @@ -128,7 +128,7 @@ public class ESIndexBuilder { // There can be some delay between the reindex finishing and count being fully up to date, so try multiple times long originalCount = 0; long reindexedCount = 0; - for (int i = 0; i < NUM_RETRIES; i++) { + for (int i = 0; i < this.numRetries; i++) { // Check if reindex succeeded by comparing document counts originalCount = getCount(indexName); reindexedCount = getCount(tempIndexName); diff --git a/metadata-io/src/test/java/com/linkedin/metadata/search/elasticsearch/ElasticSearchServiceTest.java b/metadata-io/src/test/java/com/linkedin/metadata/search/elasticsearch/ElasticSearchServiceTest.java index f5813fd10c..105742b434 100644 --- a/metadata-io/src/test/java/com/linkedin/metadata/search/elasticsearch/ElasticSearchServiceTest.java +++ b/metadata-io/src/test/java/com/linkedin/metadata/search/elasticsearch/ElasticSearchServiceTest.java @@ -97,7 +97,7 @@ public class ElasticSearchServiceTest { } public static ESIndexBuilder getIndexBuilder(RestHighLevelClient searchClient) { - return new ESIndexBuilder(searchClient, 1, 1); + return new ESIndexBuilder(searchClient, 1, 1, 3); } @Nonnull diff --git a/metadata-service/factories/src/main/java/com/linkedin/gms/factory/search/ElasticSearchIndexBuilderFactory.java b/metadata-service/factories/src/main/java/com/linkedin/gms/factory/search/ElasticSearchIndexBuilderFactory.java index 46562cb54e..d43603b328 100644 --- a/metadata-service/factories/src/main/java/com/linkedin/gms/factory/search/ElasticSearchIndexBuilderFactory.java +++ b/metadata-service/factories/src/main/java/com/linkedin/gms/factory/search/ElasticSearchIndexBuilderFactory.java @@ -28,9 +28,12 @@ public class ElasticSearchIndexBuilderFactory { @Value("${elasticsearch.index.numReplicas}") private Integer numReplicas; + @Value("${elasticsearch.index.numRetries}") + private Integer numRetries; + @Bean(name = "elasticSearchIndexBuilder") @Nonnull protected ESIndexBuilder getInstance() { - return new ESIndexBuilder(searchClient, numShards, numReplicas); + return new ESIndexBuilder(searchClient, numShards, numReplicas, numRetries); } } \ No newline at end of file diff --git a/metadata-service/factories/src/main/resources/application.yml b/metadata-service/factories/src/main/resources/application.yml index 62faf6ad2b..c42333d573 100644 --- a/metadata-service/factories/src/main/resources/application.yml +++ b/metadata-service/factories/src/main/resources/application.yml @@ -100,6 +100,7 @@ elasticsearch: prefix: ${INDEX_PREFIX:} numShards: ${ELASTICSEARCH_NUM_SHARDS_PER_INDEX:1} numReplicas: ${ELASTICSEARCH_NUM_REPLICAS_PER_INDEX:1} + numRetries: ${ELASTICSEARCH_INDEX_BUILDER_NUM_RETRIES :3} maxArrayLength: ${SEARCH_DOCUMENT_MAX_ARRAY_LENGTH:1000} # TODO: Kafka topic convention