Skip to content

Commit 2b62528

Browse files
Fix Flaky SearchServiceTests.testConcurrentSegmentSearchWithRandomizedModeSettings (#18301) (#18308)
(cherry picked from commit 8a847f2) Signed-off-by: kkewwei <kewei.11@bytedance.com> Signed-off-by: kkewwei <kkewwei@163.com> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent f5f75d6 commit 2b62528

File tree

1 file changed

+66
-47
lines changed

1 file changed

+66
-47
lines changed

server/src/test/java/org/opensearch/search/SearchServiceTests.java

Lines changed: 66 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1498,17 +1498,6 @@ public void testConcurrentSegmentSearchWithRandomizedModeSettings() throws IOExc
14981498
String clusterMode = randomFrom(modeSettings);
14991499
String indexMode = randomFrom(modeSettings);
15001500

1501-
// default to false in case mode setting is not set
1502-
boolean concurrentSearchEnabled = false;
1503-
1504-
boolean aggregationSupportsConcurrent = randomBoolean();
1505-
1506-
if (indexMode != null) {
1507-
concurrentSearchEnabled = !indexMode.equals("none") && aggregationSupportsConcurrent;
1508-
} else if (clusterMode != null) {
1509-
concurrentSearchEnabled = !clusterMode.equals("none") && aggregationSupportsConcurrent;
1510-
}
1511-
15121501
// Set the cluster setting for mode
15131502
if (clusterMode == null) {
15141503
client().admin()
@@ -1539,46 +1528,76 @@ public void testConcurrentSegmentSearchWithRandomizedModeSettings() throws IOExc
15391528
.get();
15401529
}
15411530

1542-
try (DefaultSearchContext searchContext = service.createSearchContext(request, new TimeValue(System.currentTimeMillis()))) {
1543-
assertEquals(
1544-
clusterMode,
1545-
client().admin()
1546-
.cluster()
1547-
.prepareState()
1548-
.get()
1549-
.getState()
1550-
.getMetadata()
1551-
.transientSettings()
1552-
.get(SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_MODE.getKey())
1553-
);
1554-
assertEquals(
1555-
indexMode,
1556-
client().admin()
1557-
.indices()
1558-
.prepareGetSettings(index)
1559-
.get()
1560-
.getSetting(index, IndexSettings.INDEX_CONCURRENT_SEGMENT_SEARCH_MODE.getKey())
1561-
);
1562-
SearchContextAggregations mockAggregations = mock(SearchContextAggregations.class);
1563-
when(mockAggregations.factories()).thenReturn(mock(AggregatorFactories.class));
1564-
when(mockAggregations.factories().allFactoriesSupportConcurrentSearch()).thenReturn(aggregationSupportsConcurrent);
1565-
1566-
// set the aggregations for context
1567-
searchContext.aggregations(mockAggregations);
1568-
1569-
searchContext.evaluateRequestShouldUseConcurrentSearch();
1570-
// check concurrentSearchenabled based on mode and supportedAggregation is computed correctly
1571-
assertEquals(concurrentSearchEnabled, searchContext.shouldUseConcurrentSearch());
1572-
assertThat(searchContext.searcher().getTaskExecutor(), is(notNullValue()));
1573-
} finally {
1574-
// Cleanup
1531+
assertEquals(
1532+
clusterMode,
15751533
client().admin()
15761534
.cluster()
1577-
.prepareUpdateSettings()
1578-
.setTransientSettings(Settings.builder().putNull(SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_MODE.getKey()))
1579-
.get();
1535+
.prepareState()
1536+
.get()
1537+
.getState()
1538+
.getMetadata()
1539+
.transientSettings()
1540+
.get(SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_MODE.getKey())
1541+
);
1542+
assertEquals(
1543+
indexMode,
1544+
client().admin()
1545+
.indices()
1546+
.prepareGetSettings(index)
1547+
.get()
1548+
.getSetting(index, IndexSettings.INDEX_CONCURRENT_SEGMENT_SEARCH_MODE.getKey())
1549+
);
1550+
1551+
boolean concurrentSearchEnabled;
1552+
// with aggregations.
1553+
{
1554+
boolean aggregationSupportsConcurrent = randomBoolean();
1555+
// Default concurrent search mode is auto, which enables concurrent segment search when aggregations are present.
1556+
// aggregationSupportsConcurrent determines if the present aggregation type supports concurrent segment search.
1557+
concurrentSearchEnabled = aggregationSupportsConcurrent;
1558+
if (indexMode != null) {
1559+
concurrentSearchEnabled = !indexMode.equals("none") && aggregationSupportsConcurrent;
1560+
} else if (clusterMode != null) {
1561+
concurrentSearchEnabled = !clusterMode.equals("none") && aggregationSupportsConcurrent;
1562+
}
1563+
1564+
try (DefaultSearchContext searchContext = service.createSearchContext(request, new TimeValue(System.currentTimeMillis()))) {
1565+
SearchContextAggregations mockAggregations = mock(SearchContextAggregations.class);
1566+
when(mockAggregations.factories()).thenReturn(mock(AggregatorFactories.class));
1567+
when(mockAggregations.factories().allFactoriesSupportConcurrentSearch()).thenReturn(aggregationSupportsConcurrent);
1568+
1569+
// set the aggregations for context
1570+
searchContext.aggregations(mockAggregations);
1571+
1572+
searchContext.evaluateRequestShouldUseConcurrentSearch();
1573+
// check concurrentSearchenabled based on mode and supportedAggregation is computed correctly
1574+
assertEquals(concurrentSearchEnabled, searchContext.shouldUseConcurrentSearch());
1575+
assertThat(searchContext.searcher().getTaskExecutor(), is(notNullValue()));
1576+
}
1577+
}
15801578

1579+
// without aggregations.
1580+
{
1581+
// Default concurrent search mode is auto, without aggregations, concurrent search will be disabled.
1582+
concurrentSearchEnabled = false;
1583+
if (indexMode != null) {
1584+
concurrentSearchEnabled = indexMode.equals("all");
1585+
} else if (clusterMode != null) {
1586+
concurrentSearchEnabled = clusterMode.equals("all");
1587+
}
1588+
try (DefaultSearchContext searchContext = service.createSearchContext(request, new TimeValue(System.currentTimeMillis()))) {
1589+
searchContext.evaluateRequestShouldUseConcurrentSearch();
1590+
assertEquals(concurrentSearchEnabled, searchContext.shouldUseConcurrentSearch());
1591+
assertThat(searchContext.searcher().getTaskExecutor(), is(notNullValue()));
1592+
}
15811593
}
1594+
1595+
// Cleanup
1596+
client().admin()
1597+
.cluster()
1598+
.prepareUpdateSettings()
1599+
.setTransientSettings(Settings.builder().putNull(SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_MODE.getKey()))
1600+
.get();
15821601
}
15831602

15841603
/**

0 commit comments

Comments
 (0)