Skip to content

Commit

Permalink
Fix SuggestSearch.testSkipDuplicates by forceing refresh when indexin…
Browse files Browse the repository at this point in the history
…g its test documents (opensearch-project#11068)

During the testSkipDuplicates its possible that not all documents were
fully indexed by the time the search with suggestions was created,
updating the indexing operations to refresh the index before
returning.

As its possible that did not fix the issue, I've added logging around
the test case to capture the state when the error occurred that can
assist in future troubleshooting.

Signed-off-by: Peter Nied <petern@amazon.com>
  • Loading branch information
peternied authored Nov 7, 2023
1 parent 145fd9e commit 0ba5d58
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Fix Segment Replication ShardLockObtainFailedException bug during index corruption ([10370](https://github.com/opensearch-project/OpenSearch/pull/10370))
- Fix some test methods in SimulatePipelineRequestParsingTests never run and fix test failure ([#10496](https://github.com/opensearch-project/OpenSearch/pull/10496))
- Fix passing wrong parameter when calling newConfigurationException() in DotExpanderProcessor ([#10737](https://github.com/opensearch-project/OpenSearch/pull/10737))
- Fix SuggestSearch.testSkipDuplicates by forceing refresh when indexing its test documents ([#11068](https://github.com/opensearch-project/OpenSearch/pull/11068))
- Adding version condition while adding geoshape doc values to the index, to ensure backward compatibility.([#11095](https://github.com/opensearch-project/OpenSearch/pull/11095))

### Security
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
import java.util.Set;

import static org.opensearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE;
import static org.opensearch.action.support.WriteRequest.RefreshPolicy.WAIT_UNTIL;
import static org.opensearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF_REPLICAS;
import static org.opensearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF_SHARDS;
import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
Expand Down Expand Up @@ -1171,6 +1172,7 @@ public void testSkipDuplicates() throws Exception {
createIndexAndMapping(mapping);
int numDocs = randomIntBetween(10, 100);
int numUnique = randomIntBetween(1, numDocs);
logger.info("Suggestion duplicate parameters: numDocs {} numUnique {}", numDocs, numUnique);
List<IndexRequestBuilder> indexRequestBuilders = new ArrayList<>();
int[] weights = new int[numUnique];
Integer[] termIds = new Integer[numUnique];
Expand All @@ -1180,8 +1182,10 @@ public void testSkipDuplicates() throws Exception {
int weight = randomIntBetween(0, 100);
weights[id] = Math.max(weight, weights[id]);
String suggestion = "suggestion-" + String.format(Locale.ENGLISH, "%03d", id);
logger.info("Creating {}, id {}, weight {}", suggestion, i, id, weight);
indexRequestBuilders.add(
client().prepareIndex(INDEX)
.setRefreshPolicy(WAIT_UNTIL)
.setSource(
jsonBuilder().startObject()
.startObject(FIELD)
Expand All @@ -1195,10 +1199,12 @@ public void testSkipDuplicates() throws Exception {
indexRandom(true, indexRequestBuilders);

Arrays.sort(termIds, Comparator.comparingInt(o -> weights[(int) o]).reversed().thenComparingInt(a -> (int) a));
logger.info("Expected terms id ordered {}", (Object[]) termIds);
String[] expected = new String[numUnique];
for (int i = 0; i < termIds.length; i++) {
expected[i] = "suggestion-" + String.format(Locale.ENGLISH, "%03d", termIds[i]);
}
logger.info("Expected suggestions field values {}", (Object[]) expected);
CompletionSuggestionBuilder completionSuggestionBuilder = SuggestBuilders.completionSuggestion(FIELD)
.prefix("sugg")
.skipDuplicates(true)
Expand All @@ -1207,6 +1213,7 @@ public void testSkipDuplicates() throws Exception {
SearchResponse searchResponse = client().prepareSearch(INDEX)
.suggest(new SuggestBuilder().addSuggestion("suggestions", completionSuggestionBuilder))
.get();
logger.info("Search Response with Suggestions {}", searchResponse);
assertSuggestions(searchResponse, true, "suggestions", expected);
}

Expand Down

0 comments on commit 0ba5d58

Please sign in to comment.